<?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>138995</bug_id>
          
          <creation_ts>2014-11-21 20:31:08 -0800</creation_ts>
          <short_desc>Convert PassRefPtr return types to RefPtr.</short_desc>
          <delta_ts>2014-11-22 01:11:55 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1050677</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-21 20:31:08 -0800</bug_when>
    <thetext>These days it&apos;s fine to return a RefPtr rather than a PassRefPtr.
The code generated will be the same, and we&apos;ve already started doing it when writing new code.
This bug will be about bulk-converting more code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050678</commentid>
    <comment_count>1</comment_count>
      <attachid>242104</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-21 20:33:05 -0800</bug_when>
    <thetext>Created attachment 242104
Phase I</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050679</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-21 20:34:19 -0800</bug_when>
    <thetext>Attachment 242104 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMBinding.h:368:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:64:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:65:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:66:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:67:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:68:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:69:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:70:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:71:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:72:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:73:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:74:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:75:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:76:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:77:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:78:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:79:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:80:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:81:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:82:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/html/HTMLDetailsElement.h:30:  The parameter name &quot;document&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:987:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.h:987:  The parameter name &quot;resolver&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:988:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:988:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.h:991:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.h:992:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.h:993:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.h:994:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.h:992:  The parameter name &quot;resolver&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:994:  The parameter name &quot;result&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:995:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:995:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 33 in 201 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>1050687</commentid>
    <comment_count>3</comment_count>
      <attachid>242108</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-21 21:22:30 -0800</bug_when>
    <thetext>Created attachment 242108
Phase I</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050689</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-21 21:27:31 -0800</bug_when>
    <thetext>Attachment 242108 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMBinding.h:368:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:64:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:65:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:66:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:67:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:68:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:69:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:70:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:71:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:72:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:73:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:74:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:75:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:76:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:77:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:78:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:79:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:80:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:81:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/svg/SVGPathElement.h:82:  The parameter name &quot;role&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/html/HTMLDetailsElement.h:30:  The parameter name &quot;document&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:987:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.h:987:  The parameter name &quot;resolver&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:988:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:988:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.h:991:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.h:992:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.h:993:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.h:994:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.h:992:  The parameter name &quot;resolver&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:994:  The parameter name &quot;result&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:995:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/Document.h:995:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 33 in 206 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>1050694</commentid>
    <comment_count>5</comment_count>
      <attachid>242112</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-21 22:34:28 -0800</bug_when>
    <thetext>Created attachment 242112
Phase I</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050695</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-21 22:36:29 -0800</bug_when>
    <thetext>Attachment 242112 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMBinding.h:368:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 1 in 207 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>1050706</commentid>
    <comment_count>7</comment_count>
      <attachid>242112</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-22 01:11:51 -0800</bug_when>
    <thetext>Comment on attachment 242112
Phase I

Clearing flags on attachment: 242112

Committed r176502: &lt;http://trac.webkit.org/changeset/176502&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050707</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-22 01:11:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242104</attachid>
            <date>2014-11-21 20:33:05 -0800</date>
            <delta_ts>2014-11-21 21:22:30 -0800</delta_ts>
            <desc>Phase I</desc>
            <filename>bug-138995-phase1.diff</filename>
            <type>text/plain</type>
            <size>241460</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZjQwMTdmLi4zZTBhMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUy
IEBACisyMDE0LTExLTIxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAg
ICAgICBDb252ZXJ0IFBhc3NSZWZQdHIgcmV0dXJuIHR5cGVzIHRvIFJlZlB0ci4KKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEzODk5NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGFuIGFzc29ydG1lbnQgb2YgRE9NIGFuZCBI
VE1MIHJlbGF0ZWQgZnVuY3Rpb25zCisgICAgICAgIHRvIHJldHVybiBSZWZQdHIgaW5zdGVhZCBv
ZiBQYXNzUmVmUHRyLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6Cisg
ICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBkb20vQXR0ci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdHRyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6Y2xvbmVO
b2RlKToKKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RBVEFTZWN0aW9uOjpjbG9uZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RB
VEFTZWN0aW9uOjp2aXJ0dWFsQ3JlYXRlKToKKyAgICAgICAgKiBkb20vQ0RBVEFTZWN0aW9uLmg6
CisgICAgICAgICogZG9tL0NvbW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1lbnQ6OmNsb25lTm9kZSk6CisgICAgICAg
ICogZG9tL0NvbW1lbnQuaDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hpbGROb2Rlc0xhenlTbmFwc2hvdDo6bmV4dE5vZGUpOgorICAgICAgICAq
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxl
bWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBs
ZW1lbnRhdGlvbjo6Y3JlYXRlSFRNTERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRE9NSW1wbGVt
ZW50YXRpb24uaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRl
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRGcmFn
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUNvbW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNyZWF0ZUNEQVRBU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpjcmVhdGVFbnRpdHlSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
Y3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aW1wb3J0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRvcHROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRHZXROYW1lZEZsb3dzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFbGVtZW50TlMpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmNyZWF0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVOb2Rl
SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVRyZWVXYWxrZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y2xvbmVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpjcmVhdGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVBdHRyaWJ1dGVOUyk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjphcHBsZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbWJlZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBsdWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmxpbmtzKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6YW5jaG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3aW5kb3dOYW1lZEl0ZW1zKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojpkb2N1bWVudE5hbWVkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmNyZWF0ZUV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmNyZWF0ZU5TUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmV2YWx1YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVu
Y29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVUb3VjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Zm9udHMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6Y3JlYXRlWEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNy
ZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmltcG9ydE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRyYW5zZm9ybVNvdXJj
ZURvY3VtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRGcmFnbWVudDo6Y2xvbmVOb2RlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFn
bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRUeXBlOjpjbG9uZU5vZGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFR5cGUu
aDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xvbmVOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhDaGlsZHJlbik6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkZXRhY2hBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0Q2xpZW50UmVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNyZWF0ZVNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
QXR0cmlidXRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1dGVO
b2RlTlMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGVOUyk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjplbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjphdHRySWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5z
dXJlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRl
cmVyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbnRpdHlSZWZl
cmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50aXR5UmVmZXJlbmNlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RW50aXR5UmVmZXJlbmNlOjpjbG9uZU5vZGUpOgorICAgICAgICAq
IGRvbS9FbnRpdHlSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpjaGlsZE5vZGVzKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAg
ICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpjbG9uZU5vZGUpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKToKKyAgICAgICAg
KiBkb20vUHNldWRvRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAg
ICAgICogZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKiBk
b20vVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dDo6Y3JlYXRlRWRpdGluZ1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dDo6c3BsaXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OnJlcGxhY2VXaG9sZVRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y2xvbmVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHQ6OnZpcnR1YWxDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6Y3JlYXRlV2l0
aExlbmd0aExpbWl0KToKKyAgICAgICAgKiBkb20vVGV4dC5oOgorICAgICAgICAqIGVkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU3R5bGVTcGFuRWxlbWVudCk6CisgICAgICAg
ICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0
TGlzdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGlzdENvbW1hbmQ6Omlu
c2VydExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGlzdENvbW1hbmQ6Om1lcmdlV2l0
aE5laWdoYm9yaW5nTGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGlzdENvbW1hbmQ6
Omxpc3RpZnlQYXJhZ3JhcGgpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpc3RDb21tYW5kOjpjcmVhdGUpOgorICAgICAg
ICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RlRQ
RGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZVRERm9yRmlsZW5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50OjpjcmVhdGVQYXJzZXIpOgorICAgICAg
ICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBbmNo
b3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxBcHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJl
YUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEF1ZGlvRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1l
bnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTEF1ZGlvRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEJESUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxCUkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJSRWxlbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxCUkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxCYXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQmFzZUVsZW1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQmFzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxCYXNlRm9udEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogaHRtbC9IVE1MQm9keUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmdldEltYWdlRGF0
YSk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTERMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRExpc3RFbGVtZW50
OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTERMaXN0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGF0
YUxpc3RFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERhdGFMaXN0RWxl
bWVudDo6b3B0aW9ucyk6CisgICAgICAgICogaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGV0YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWls
c1N1bW1hcnlFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRGlyZWN0b3J5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxEaXJl
Y3RvcnlFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRGl2RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hU
TUxEaXZFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpjcmVhdGVQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTERvY3VtZW50OjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxE
b2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbik6CisgICAgICAgICogaHRtbC9I
VE1MRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVu
dCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojp0ZXh0
VG9GcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y2hpbGRyZW4pOgor
ICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxG
aWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1l
bnRzKToKKyAgICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxGb250RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9udEVsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9udEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmVsZW1l
bnRzKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTEZyYW1lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50
OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJh
bWVTZXRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSFJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTEhlYWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxIZWFkRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxIZWFkRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxIZWFkaW5nRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxI
ZWFkaW5nRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEh0bWxFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxIdG1sRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1s
L0hUTUxIdG1sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rv
cik6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MS2V5Z2Vu
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxLZXlnZW5FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MTElFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
SUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTElFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
YWJlbEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTGFiZWxFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTGVnZW5kRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxMZWdlbmRF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTExp
bmtFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWFwRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWFwRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNYXBFbGVtZW50OjphcmVhcyk6CisgICAgICAgICogaHRtbC9IVE1MTWFwRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNYXJxdWVlRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNYXJxdWVl
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lbnVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZW51RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZW51RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1ldGFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZXRhRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZXRhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvSFRNTE1ldGVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1vZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICog
aHRtbC9IVE1MTW9kRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9MaXN0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT0xpc3RFbGVtZW50OjpjcmVhdGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTE9MaXN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmNyZWF0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TE9wdEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxl
bWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MT3V0cHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcmFncmFwaEVsZW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TFBhcmFtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyYW1FbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFBhcmFtRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFByZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByZUVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MUHJlRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJvZ3Jl
c3NFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Ny
aXB0RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbik6Cisg
ICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvSFRNTFNvdXJjZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTcGFuRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3BhbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogaHRtbC9IVE1MU3BhbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTdW1t
YXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdW1tYXJ5Q29udGVudEVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNh
cHRpb25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNvbEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVRI
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVRGb290KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVRCb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZUNhcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6aW5zZXJ0Um93KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNoYXJlZENlbGxTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGFibGVFbGVtZW50Ojpyb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJs
ZUVsZW1lbnQ6OnRCb2RpZXMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVSb3dFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRh
YmxlUm93RWxlbWVudDo6aW5zZXJ0Q2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVS
b3dFbGVtZW50OjpjZWxscyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjppbnNlcnRSb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MpOgorICAgICAgICAqIGh0bWwvSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRlbXBsYXRlRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNsb25lTm9kZSk6CisgICAgICAg
ICogaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGl0bGVFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmFja0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxVTGlzdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVUxpc3RFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxXQlJFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRG9jdW1lbnRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1
bWVudDo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFE
b2N1bWVudDo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL1BsdWdpbkRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpbkRvY3VtZW50OjpjcmVhdGVQYXJzZXIpOgorICAgICAgICAqIGh0bWwvUGx1Z2luRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL1RleHREb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcik6CisgICAgICAgICogaHRtbC9UZXh0RG9jdW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MU3RhY2tJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3RhY2tJdGVt
OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhv
dXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4pOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3Vz
dG9tU3R5bGVGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAqIGh0bWwvdHJhY2svV2Vi
VlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50OjpjbG9uZUVs
ZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L1dlYlZUVEVsZW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvU2lua0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNpbmtEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAgKiBs
b2FkZXIvU2lua0RvY3VtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBt
YXRobWwvTWF0aE1MRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJl
bik6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5k
ZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1Bh
dGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDbG9z
ZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhT
ZWdNb3ZldG9BYnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNW
R1BhdGhTZWdNb3ZldG9SZWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmNy
ZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1l
bnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9SZWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljQWJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpjcmVhdGVT
VkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
RWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0FyY0Ficyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jp
em9udGFsUmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQ
YXRoU2VnTGluZXRvVmVydGljYWxBYnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1l
bnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZl
dG9DdWJpY1Ntb290aFJlbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6Y3Jl
YXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3Ro
UmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50Ojpsb29rdXBPckNyZWF0ZURX
cmFwcGVyKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50
OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKToKKyAgICAgICAgKiBz
dmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorCiAyMDE0LTExLTIxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgaU9TIGJ1aWxkIGZpeCBhZnRlciBy
MTc2NDYyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA1
OGJkOTM4Li43NmFkY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaApAQCAtMzY1LDYgKzM2NSwxMSBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0
dXJuIHZpZXctPndyYXAoZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VD4gcHRyKQoreworICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHRyLmdldCgpKTsKK30KKwogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFQ+IHB0cikKIHsKICAg
ICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5j
cHAKaW5kZXggNzFkYTljNi4uZTZiNGQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0F0dHIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtNTMsMTQgKzUz
LDE0IEBAIEF0dHI6OkF0dHIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0CiB7CiB9CiAKLVBhc3NSZWZQdHI8QXR0cj4g
QXR0cjo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUp
CitSZWZQdHI8QXR0cj4gQXR0cjo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUpCiB7CiAgICAgUmVmUHRyPEF0dHI+IGF0dHIgPSBhZG9wdFJlZihuZXcg
QXR0cihlbGVtZW50LCBuYW1lKSk7CiAgICAgYXR0ci0+Y3JlYXRlVGV4dENoaWxkKCk7CiAgICAg
cmV0dXJuIGF0dHIucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEF0dHI+IEF0dHI6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCitSZWZQdHI8QXR0cj4gQXR0cjo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGFkb3B0UmVmKG5ldyBBdHRyKGRvY3Vt
ZW50LCBuYW1lLCB2YWx1ZSkpOwogICAgIGF0dHItPmNyZWF0ZVRleHRDaGlsZCgpOwpAQCAtMTM3
LDcgKzEzNyw3IEBAIHZvaWQgQXR0cjo6c2V0Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYgdiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgc2V0VmFsdWUodiwgZWMpOwogfQogCi1QYXNzUmVmUHRyPE5v
ZGU+IEF0dHI6OmNsb25lTm9kZShib29sIC8qZGVlcCovKQorUmVmUHRyPE5vZGU+IEF0dHI6OmNs
b25lTm9kZShib29sIC8qZGVlcCovKQogewogICAgIFJlZlB0cjxBdHRyPiBjbG9uZSA9IGFkb3B0
UmVmKG5ldyBBdHRyKGRvY3VtZW50KCksIHF1YWxpZmllZE5hbWUoKSwgdmFsdWUoKSkpOwogICAg
IGNsb25lQ2hpbGROb2RlcyhjbG9uZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQXR0ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCBhN2E4OTQ1Li5j
MTBmY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgTXV0YWJsZVN0eWxl
UHJvcGVydGllczsKIAogY2xhc3MgQXR0ciBmaW5hbCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdHRyPiBjcmVhdGUoRWxlbWVudCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdHRyPiBjcmVhdGUo
RG9jdW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSk7CisgICAgc3RhdGljIFJlZlB0cjxBdHRyPiBjcmVhdGUoRWxlbWVudCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEF0dHI+IGNyZWF0ZShEb2N1bWVudCYsIGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKICAgICB2aXJ0
dWFsIH5BdHRyKCk7CiAKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIHF1YWxpZmll
ZE5hbWUoKS50b1N0cmluZygpOyB9CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIFN0cmluZyBub2RlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2YWx1ZSgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9k
ZShib29sIGRlZXApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9k
ZShib29sIGRlZXApIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzQXR0cmlidXRlTm9k
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2hp
bGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFU
QVNlY3Rpb24uY3BwCmluZGV4IDRiMzk3MmEuLmMzMTI3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFU
QVNlY3Rpb24uY3BwCkBAIC0zMSw3ICszMSw3IEBAIGlubGluZSBDREFUQVNlY3Rpb246OkNEQVRB
U2VjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKIH0KIAot
UGFzc1JlZlB0cjxDREFUQVNlY3Rpb24+IENEQVRBU2VjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmUHRyPENEQVRBU2VjdGlvbj4gQ0RBVEFT
ZWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDREFUQVNlY3Rpb24oZG9jdW1lbnQsIGRhdGEpKTsK
IH0KQEAgLTQ2LDcgKzQ2LDcgQEAgTm9kZTo6Tm9kZVR5cGUgQ0RBVEFTZWN0aW9uOjpub2RlVHlw
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIENEQVRBX1NFQ1RJT05fTk9ERTsKIH0KIAotUGFzc1JlZlB0
cjxOb2RlPiBDREFUQVNlY3Rpb246OmNsb25lTm9kZShib29sIC8qZGVlcCovKQorUmVmUHRyPE5v
ZGU+IENEQVRBU2VjdGlvbjo6Y2xvbmVOb2RlKGJvb2wgLypkZWVwKi8pCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZShkb2N1bWVudCgpLCBkYXRhKCkpOwogfQpAQCAtNTYsNyArNTYsNyBAQCBib29sIENE
QVRBU2VjdGlvbjo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8VGV4dD4gQ0RBVEFTZWN0aW9uOjp2aXJ0dWFsQ3JlYXRl
KGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZlB0cjxUZXh0PiBDREFUQVNlY3Rpb246OnZpcnR1YWxD
cmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQo
KSwgZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmgKaW5kZXggN2U5ODIzZS4uZGU1
MmYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaApAQCAtMjksMTYgKzI5LDE2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RBVEFTZWN0aW9uIGZpbmFsIDogcHVibGljIFRl
eHQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENEQVRBU2VjdGlvbj4gY3JlYXRl
KERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZlB0cjxDREFUQVNlY3Rp
b24+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIENE
QVRBU2VjdGlvbihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBTdHJp
bmcgbm9kZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVU
eXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25l
Tm9kZShib29sIGRlZXApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25l
Tm9kZShib29sIGRlZXApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxv
d2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4
dD4gdmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxUZXh0PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCmluZGV4IDk2MWU4ZjEu
LmRlMmRmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKQEAgLTMxLDEyICszMSwxMiBAQCBpbmxp
bmUgQ29tbWVudDo6Q29tbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4
dCkKIHsKIH0KIAotUGFzc1JlZlB0cjxDb21tZW50PiBDb21tZW50OjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCitSZWZQdHI8Q29tbWVudD4gQ29tbWVudDo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ29tbWVudChkb2N1bWVudCwgdGV4dCkpOwogfQogCi1QYXNzUmVm
UHRyPENvbW1lbnQ+IENvbW1lbnQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpCitSZWZQdHI8Q29tbWVudD4gQ29tbWVudDo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbW1lbnQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRl
eHQpLCB0ZXh0KSk7CiB9CkBAIC01MSw3ICs1MSw3IEBAIE5vZGU6Ok5vZGVUeXBlIENvbW1lbnQ6
Om5vZGVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gQ09NTUVOVF9OT0RFOwogfQogCi1QYXNzUmVm
UHRyPE5vZGU+IENvbW1lbnQ6OmNsb25lTm9kZShib29sIC8qZGVlcCovKQorUmVmUHRyPE5vZGU+
IENvbW1lbnQ6OmNsb25lTm9kZShib29sIC8qZGVlcCovKQogewogICAgIHJldHVybiBjcmVhdGUo
ZG9jdW1lbnQoKSwgZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21tZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCmluZGV4IGMxYTQ5ZDUuLjU2
NjhiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaApAQCAtMjksMTUgKzI5LDE1IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29tbWVudCBmaW5hbCA6IHB1YmxpYyBDaGFyYWN0ZXJEYXRhIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb21tZW50PiBjcmVhdGUoRG9jdW1lbnQm
LCBjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb21tZW50PiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBSZWZQ
dHI8Q29tbWVudD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGlj
IFJlZlB0cjxDb21tZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0
cmluZyYpOwogCiBwcml2YXRlOgogICAgIENvbW1lbnQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcm
KTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA1ZTE4MmY3Li4wN2Q3NGJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTEzNCwxMSArMTM0LDExIEBAIHB1YmxpYzoK
ICAgICBFbGVtZW50KiBxdWVyeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgUmVmUHRyPE5vZGVMaXN0PiBxdWVyeVNlbGVjdG9yQWxsKGNvbnN0
IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBnZXRFbGVtZW50c0J5VGFnTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSk7Ci0gICAg
UGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeU5hbWUoY29uc3QgU3RyaW5nJiBlbGVt
ZW50TmFtZSk7Ci0gICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZXMpOwotICAgIFBhc3NSZWZQdHI8UmFkaW9O
b2RlTGlzdD4gcmFkaW9Ob2RlTGlzdChjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBSZWZQdHI8
Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAg
IFJlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpOworICAgIFJl
ZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeU5hbWUoY29uc3QgU3RyaW5nJiBlbGVtZW50TmFt
ZSk7CisgICAgUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYgY2xhc3NOYW1lcyk7CisgICAgUmVmUHRyPFJhZGlvTm9kZUxpc3Q+IHJhZGlv
Tm9kZUxpc3QoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNp
dCBDb250YWluZXJOb2RlKERvY3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRh
aW5lcik7CkBAIC0yNjIsNyArMjYyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFJldHVy
bnMgMCBpZiB0aGVyZSBpcyBubyBuZXh0IE5vZGUuCi0gICAgUGFzc1JlZlB0cjxOb2RlPiBuZXh0
Tm9kZSgpCisgICAgUmVmUHRyPE5vZGU+IG5leHROb2RlKCkKICAgICB7CiAgICAgICAgIGlmIChM
SUtFTFkoIWhhc1NuYXBzaG90KCkpKSB7CiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9
IG1fY3VycmVudE5vZGUucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RPTUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRh
dGlvbi5jcHAKaW5kZXggOGNiMTJjYi4uN2I3ZDdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
SW1wbGVtZW50YXRpb24uY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgYm9vbCBET01JbXBsZW1lbnRh
dGlvbjo6aGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IERP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudFR5cGUoY29uc3QgU3RyaW5nJiBxdWFsaWZp
ZWROYW1lLAorUmVmUHRyPERvY3VtZW50VHlwZT4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURv
Y3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsCiAgICAgY29uc3QgU3RyaW5n
JiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgU3RyaW5nIHByZWZpeCwgbG9jYWxOYW1lOwpAQCAtMjA5LDcgKzIwOSw3IEBAIERPTUlt
cGxlbWVudGF0aW9uKiBET01JbXBsZW1lbnRhdGlvbjo6Z2V0SW50ZXJmYWNlKGNvbnN0IFN0cmlu
ZyYgLypmZWF0dXJlKi8pCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+
IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIG5hbWVzcGFj
ZVVSSSwKK1JlZlB0cjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50
KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLAogICAgIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVk
TmFtZSwgRG9jdW1lbnRUeXBlKiBkb2N0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBS
ZWZQdHI8RG9jdW1lbnQ+IGRvYzsKQEAgLTIzNCwxMCArMjM0LDEwIEBAIFBhc3NSZWZQdHI8RG9j
dW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIG5h
bWVzcGFjZVVSCiAgICAgaWYgKGRvY3VtZW50RWxlbWVudCkKICAgICAgICAgZG9jLT5hcHBlbmRD
aGlsZChkb2N1bWVudEVsZW1lbnQucmVsZWFzZSgpKTsKIAotICAgIHJldHVybiBkb2MucmVsZWFz
ZSgpOworICAgIHJldHVybiBkb2M7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gRE9N
SW1wbGVtZW50YXRpb246OmNyZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBtZWRpYSwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8Q1NTU3R5bGVTaGVldD4gRE9N
SW1wbGVtZW50YXRpb246OmNyZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBtZWRpYSwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgLy8gRklYTUU6IFRpdGxlIHNo
b3VsZCBiZSBzZXQuCiAgICAgLy8gRklYTUU6IE1lZGlhIGNvdWxkIGhhdmUgd3Jvbmcgc3ludGF4
LCBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBnZW5lcmF0ZSBhbiBleGNlcHRpb24uCkBAIC0yODgs
NyArMjg4LDcgQEAgYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8SFRN
TERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0
cmluZyYgdGl0bGUpCitSZWZQdHI8SFRNTERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3Jl
YXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgUmVmUHRyPEhUTUxE
b2N1bWVudD4gZCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKICAgICBkLT5vcGVu
KCk7CkBAIC0yOTYsMTAgKzI5NiwxMCBAQCBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4gRE9NSW1w
bGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdAogICAgIGlm
ICghdGl0bGUuaXNOdWxsKCkpCiAgICAgICAgIGQtPnNldFRpdGxlKHRpdGxlKTsKICAgICBkLT5z
ZXRTZWN1cml0eU9yaWdpbihtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIHJldHVy
biBkLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZDsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudD4g
RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJh
bWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKK1JlZlB0cjxEb2N1bWVudD4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBQbHVnaW5zIGNhbm5vdCB0YWtlIEhUTUwgYW5kIFhI
VE1MIGZyb20gdXMsIGFuZCB3ZSBkb24ndCBldmVuIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcGx1
Z2luIGRhdGFiYXNlIGZvciB0aG9zZS4KICAgICBpZiAodHlwZSA9PSAidGV4dC9odG1sIikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgKaW5kZXggN2NhNThkNS4uYmFmMjE5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmgKQEAgLTI4LDcgKzI4LDYgQEAK
ICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsMjYgKzQ2LDI1IEBA
IGNsYXNzIERPTUltcGxlbWVudGF0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgRE9NSW1wbGVtZW50YXRpb24oRG9jdW1lbnQmKTsKIAotICAgIAog
ICAgIHZvaWQgcmVmKCkgeyBtX2RvY3VtZW50LnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsg
bV9kb2N1bWVudC5kZXJlZigpOyB9CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgeyByZXR1cm4g
bV9kb2N1bWVudDsgfQogCiAgICAgLy8gRE9NIG1ldGhvZHMgJiBhdHRyaWJ1dGVzIGZvciBET01J
bXBsZW1lbnRhdGlvbgogICAgIHN0YXRpYyBib29sIGhhc0ZlYXR1cmUoY29uc3QgU3RyaW5nJiBm
ZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRU
eXBlPiBjcmVhdGVEb2N1bWVudFR5cGUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25z
dCBTdHJpbmcmIHB1YmxpY0lkLCBjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5n
JiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBl
KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxEb2N1bWVudFR5cGU+IGNyZWF0ZURvY3Vt
ZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGlj
SWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8
RG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25z
dCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSosIEV4Y2VwdGlvbkNvZGUmKTsK
IAogICAgIERPTUltcGxlbWVudGF0aW9uKiBnZXRJbnRlcmZhY2UoY29uc3QgU3RyaW5nJiBmZWF0
dXJlKTsKIAogICAgIC8vIEZyb20gdGhlIERPTUltcGxlbWVudGF0aW9uQ1NTIGludGVyZmFjZQot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUNTU1N0eWxlU2hlZXQo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBtZWRpYSwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHN0YXRpYyBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gY3JlYXRlQ1NTU3R5bGVTaGVldChj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIG1lZGlhLCBFeGNlcHRpb25Db2RlJik7
CiAKICAgICAvLyBGcm9tIHRoZSBIVE1MRE9NSW1wbGVtZW50YXRpb24gaW50ZXJmYWNlCi0gICAg
UGFzc1JlZlB0cjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcm
IHRpdGxlKTsKKyAgICBSZWZQdHI8SFRNTERvY3VtZW50PiBjcmVhdGVIVE1MRG9jdW1lbnQoY29u
c3QgU3RyaW5nJiB0aXRsZSk7CiAKICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBE
T00pCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIEZyYW1lKiwgY29uc3QgVVJMJik7CisgICAgc3RhdGljIFJlZlB0
cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgRnJhbWUq
LCBjb25zdCBVUkwmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzWE1MTUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgaXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCAzNzQ4M2NlLi4zMWMxNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTU2NSw3ICs1NjUsNyBAQCBzdGF0aWMgYm9vbCBpc0F0dHJpYnV0ZU9uQWxsT3duZXJz
KGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSwgY29ucwogfQogI2VuZGlm
CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+IERvY3VtZW50OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxEb2N1bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9j
dW1lbnQgPSBhZG9wdFJlZihuZXcgRG9jdW1lbnQobnVsbHB0ciwgVVJMKCkpKTsKICAgICBkb2N1
bWVudC0+c2V0U2VjdXJpdHlPcmlnaW4oY29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKQEAgLTg0
OCw3ICs4NDgsNyBAQCB2b2lkIERvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmIGNoYW5nZSkKICAgICBjbGVhclN0eWxlUmVzb2x2ZXIoKTsKIH0KIAotUGFzc1JlZlB0
cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVF
bGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgaWYgKCFpc1ZhbGlkTmFtZShuYW1lKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQ0hBUkFD
VEVSX0VSUjsKQEAgLTg2MSwyMiArODYxLDIyIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRG9jdW1l
bnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25DCiAg
ICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZSwgbnVs
bEF0b20pLCBmYWxzZSk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRG9jdW1l
bnQ6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERv
Y3VtZW50OjpjcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKIHsKICAgICByZXR1cm4gRG9jdW1lbnRG
cmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogfQogCi1QYXNzUmVmUHRyPFRleHQ+IERvY3Vt
ZW50OjpjcmVhdGVUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEpCitSZWZQdHI8VGV4dD4gRG9j
dW1lbnQ6OmNyZWF0ZVRleHROb2RlKGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICByZXR1cm4g
VGV4dDo6Y3JlYXRlKCp0aGlzLCBkYXRhKTsKIH0KIAotUGFzc1JlZlB0cjxDb21tZW50PiBEb2N1
bWVudDo6Y3JlYXRlQ29tbWVudChjb25zdCBTdHJpbmcmIGRhdGEpCitSZWZQdHI8Q29tbWVudD4g
RG9jdW1lbnQ6OmNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIHJldHVy
biBDb21tZW50OjpjcmVhdGUoKnRoaXMsIGRhdGEpOwogfQogCi1QYXNzUmVmUHRyPENEQVRBU2Vj
dGlvbj4gRG9jdW1lbnQ6OmNyZWF0ZUNEQVRBU2VjdGlvbihjb25zdCBTdHJpbmcmIGRhdGEsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPENEQVRBU2VjdGlvbj4gRG9jdW1lbnQ6OmNyZWF0ZUNE
QVRBU2VjdGlvbihjb25zdCBTdHJpbmcmIGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IGlmIChpc0hUTUxEb2N1bWVudCgpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
CkBAIC04ODUsNyArODg1LDcgQEAgUGFzc1JlZlB0cjxDREFUQVNlY3Rpb24+IERvY3VtZW50Ojpj
cmVhdGVDREFUQVNlY3Rpb24oY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHQKICAgICByZXR1cm4g
Q0RBVEFTZWN0aW9uOjpjcmVhdGUoKnRoaXMsIGRhdGEpOwogfQogCi1QYXNzUmVmUHRyPFByb2Nl
c3NpbmdJbnN0cnVjdGlvbj4gRG9jdW1lbnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihj
b25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJiBl
YykKK1JlZlB0cjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IERvY3VtZW50OjpjcmVhdGVQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24oY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFpc1ZhbGlkTmFtZSh0YXJnZXQpKSB7CiAg
ICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwpAQCAtODk4LDcgKzg5OCw3IEBAIFBh
c3NSZWZQdHI8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBEb2N1bWVudDo6Y3JlYXRlUHJvY2Vzc2lu
Z0luc3RydWN0aW9uKGNvbnN0IFN0CiAgICAgcmV0dXJuIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6
Y3JlYXRlKCp0aGlzLCB0YXJnZXQsIGRhdGEpOwogfQogCi1QYXNzUmVmUHRyPEVudGl0eVJlZmVy
ZW5jZT4gRG9jdW1lbnQ6OmNyZWF0ZUVudGl0eVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIG5hbWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEVudGl0eVJlZmVyZW5jZT4gRG9jdW1lbnQ6OmNy
ZWF0ZUVudGl0eVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGlmICghaXNWYWxpZE5hbWUobmFtZSkpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X0NIQVJBQ1RFUl9FUlI7CkBAIC05MTEsMTggKzkxMSwxOCBAQCBQYXNzUmVmUHRyPEVudGl0eVJl
ZmVyZW5jZT4gRG9jdW1lbnQ6OmNyZWF0ZUVudGl0eVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIG5h
bWUsCiAgICAgcmV0dXJuIEVudGl0eVJlZmVyZW5jZTo6Y3JlYXRlKCp0aGlzLCBuYW1lKTsKIH0K
IAotUGFzc1JlZlB0cjxUZXh0PiBEb2N1bWVudDo6Y3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbnN0
IFN0cmluZyYgdGV4dCkKK1JlZlB0cjxUZXh0PiBEb2N1bWVudDo6Y3JlYXRlRWRpdGluZ1RleHRO
b2RlKGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICByZXR1cm4gVGV4dDo6Y3JlYXRlRWRpdGlu
Z1RleHQoKnRoaXMsIHRleHQpOwogfQogCi1QYXNzUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+
IERvY3VtZW50OjpjcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCkKK1JlZlB0cjxDU1NTdHlsZURl
Y2xhcmF0aW9uPiBEb2N1bWVudDo6Y3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbigpCiB7CiAgICAg
UmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHByb3BlcnR5U2V0KE11dGFibGVTdHlsZVByb3Bl
cnRpZXM6OmNyZWF0ZSgpKTsKICAgICByZXR1cm4gcHJvcGVydHlTZXQtPmVuc3VyZUNTU1N0eWxl
RGVjbGFyYXRpb24oKTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9k
ZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQ
dHI8Tm9kZT4gRG9jdW1lbnQ6OmltcG9ydE5vZGUoTm9kZSogaW1wb3J0ZWROb2RlLCBib29sIGRl
ZXAsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKICAgICAKQEAgLTEwMDQsNyAr
MTAwNCw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmltcG9ydE5vZGUoTm9kZSogaW1w
b3J0ZWROb2RlLCBib29sIGRlZXAsIEV4Y2VwdGlvbkNvCiB9CiAKIAotUGFzc1JlZlB0cjxOb2Rl
PiBEb2N1bWVudDo6YWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25D
b2RlJiBlYykKK1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9k
ZT4gc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIXNvdXJjZSkgewogICAg
ICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtMTA4MCw3ICsxMDgwLDcgQEAgYm9vbCBE
b2N1bWVudDo6aGFzVmFsaWROYW1lc3BhY2VGb3JBdHRyaWJ1dGVzKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHFOYW1lKQogfQogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGluIGEgcG9z
c2libGUgRWxlbWVudEZhY3RvcnkgY2xhc3MuCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50
OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGJvb2wgY3JlYXRlZEJ5
UGFyc2VyKQorUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIFJlZlB0cjxF
bGVtZW50PiBlbGVtZW50OwogCkBAIC0xMTE3LDcgKzExMTcsNyBAQCBib29sIERvY3VtZW50Ojpj
c3NDb21wb3NpdGluZ0VuYWJsZWQoKSBjb25zdAogCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQog
Ci1QYXNzUmVmUHRyPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IERvY3VtZW50Ojp3ZWJraXRHZXRO
YW1lZEZsb3dzKCkKK1JlZlB0cjxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiBEb2N1bWVudDo6d2Vi
a2l0R2V0TmFtZWRGbG93cygpCiB7CiAgICAgaWYgKCFjc3NSZWdpb25zRW5hYmxlZCgpIHx8ICFy
ZW5kZXJWaWV3KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTEzNyw3ICsxMTM3LDcg
QEAgTmFtZWRGbG93Q29sbGVjdGlvbiYgRG9jdW1lbnQ6Om5hbWVkRmxvd3MoKQogICAgIHJldHVy
biAqbV9uYW1lZEZsb3dzOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVh
dGVFbGVtZW50TlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVh
bGlmaWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6
OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5n
JiBxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBTdHJpbmcgcHJlZml4
LCBsb2NhbE5hbWU7CiAgICAgaWYgKCFwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwg
cHJlZml4LCBsb2NhbE5hbWUsIGVjKSkKQEAgLTE0MjUsMTIgKzE0MjUsMTIgQEAgRWxlbWVudCog
RG9jdW1lbnQ6OmVsZW1lbnRGcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50
KQogICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlKTsKIH0KIAotUGFzc1JlZlB0cjxS
YW5nZT4gRG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KQorUmVmUHRy
PFJhbmdlPiBEb2N1bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkpCiB7CiAg
ICAgcmV0dXJuIGNhcmV0UmFuZ2VGcm9tUG9pbnQoTGF5b3V0UG9pbnQoeCwgeSkpOwogfQogCi1Q
YXNzUmVmUHRyPFJhbmdlPiBEb2N1bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludChjb25zdCBMYXlv
dXRQb2ludCYgY2xpZW50UG9pbnQpCitSZWZQdHI8UmFuZ2U+IERvY3VtZW50OjpjYXJldFJhbmdl
RnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCkKIHsKICAgICBpZiAoIWhh
c0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNjgxLDEy
ICsxNjgxLDEyIEBAIFNldHRpbmdzKiBEb2N1bWVudDo6c2V0dGluZ3MoKSBjb25zdAogICAgIHJl
dHVybiBtX2ZyYW1lID8gJm1fZnJhbWUtPnNldHRpbmdzKCkgOiBudWxscHRyOwogfQogCi1QYXNz
UmVmUHRyPFJhbmdlPiBEb2N1bWVudDo6Y3JlYXRlUmFuZ2UoKQorUmVmUHRyPFJhbmdlPiBEb2N1
bWVudDo6Y3JlYXRlUmFuZ2UoKQogewogICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKCp0aGlzKTsK
IH0KIAotUGFzc1JlZlB0cjxOb2RlSXRlcmF0b3I+IERvY3VtZW50OjpjcmVhdGVOb2RlSXRlcmF0
b3IoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFRvU2hvdywgCitSZWZQdHI8Tm9kZUl0ZXJhdG9y
PiBEb2N1bWVudDo6Y3JlYXRlTm9kZUl0ZXJhdG9yKE5vZGUqIHJvb3QsIHVuc2lnbmVkIHdoYXRU
b1Nob3csIAogICAgIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4gZmlsdGVyLCBib29sIGV4cGFuZEVu
dGl0eVJlZmVyZW5jZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghcm9vdCkgewpA
QCAtMTY5Niw3ICsxNjk2LDcgQEAgUGFzc1JlZlB0cjxOb2RlSXRlcmF0b3I+IERvY3VtZW50Ojpj
cmVhdGVOb2RlSXRlcmF0b3IoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFQKICAgICByZXR1cm4g
Tm9kZUl0ZXJhdG9yOjpjcmVhdGUocm9vdCwgd2hhdFRvU2hvdywgZmlsdGVyLCBleHBhbmRFbnRp
dHlSZWZlcmVuY2VzKTsKIH0KIAotUGFzc1JlZlB0cjxUcmVlV2Fsa2VyPiBEb2N1bWVudDo6Y3Jl
YXRlVHJlZVdhbGtlcihOb2RlKiByb290LCB1bnNpZ25lZCB3aGF0VG9TaG93LCAKK1JlZlB0cjxU
cmVlV2Fsa2VyPiBEb2N1bWVudDo6Y3JlYXRlVHJlZVdhbGtlcihOb2RlKiByb290LCB1bnNpZ25l
ZCB3aGF0VG9TaG93LCAKICAgICBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IGZpbHRlciwgYm9vbCBl
eHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIXJv
b3QpIHsKQEAgLTIyNDMsNyArMjI0Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFZpc3VhbGx5T3Jk
ZXJlZCgpCiAgICAgICAgIHJlbmRlclZpZXcoKS0+c3R5bGUoKS5zZXRSVExPcmRlcmluZyhWaXN1
YWxPcmRlcik7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IERvY3VtZW50OjpjcmVh
dGVQYXJzZXIoKQorUmVmUHRyPERvY3VtZW50UGFyc2VyPiBEb2N1bWVudDo6Y3JlYXRlUGFyc2Vy
KCkKIHsKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgcGFzcyB0aGUgZnJhbWUg
aW5zdGVhZAogICAgIHJldHVybiBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKCp0aGlzLCB2aWV3
KCkpOwpAQCAtMzE4OSwxNiArMzE4OSwxNiBAQCBib29sIERvY3VtZW50OjpjYW5SZXBsYWNlQ2hp
bGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1QYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjpjbG9uZU5vZGUoYm9vbCBkZWVwKQorUmVmUHRy
PE5vZGU+IERvY3VtZW50OjpjbG9uZU5vZGUoYm9vbCBkZWVwKQogewogICAgIFJlZlB0cjxEb2N1
bWVudD4gY2xvbmUgPSBjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCk7CiAgICAgY2xvbmUt
PmNsb25lRGF0YUZyb21Eb2N1bWVudCgqdGhpcyk7CiAgICAgaWYgKGRlZXApCiAgICAgICAgIGNs
b25lQ2hpbGROb2RlcyhjbG9uZS5nZXQoKSk7Ci0gICAgcmV0dXJuIGNsb25lLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+IERvY3VtZW50Ojpj
bG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QKK1JlZlB0cjxEb2N1bWVudD4gRG9j
dW1lbnQ6OmNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdAogewogICAgIHJldHVy
biBpc1hIVE1MRG9jdW1lbnQoKSA/IGNyZWF0ZVhIVE1MKG51bGxwdHIsIHVybCgpKSA6IGNyZWF0
ZShudWxscHRyLCB1cmwoKSk7CiB9CkBAIC0zODE5LDcgKzM4MTksNyBAQCB2b2lkIERvY3VtZW50
OjplbnF1ZXVlT3ZlcmZsb3dFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBtX2V2
ZW50UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50KTsKIH0KIAotUGFzc1JlZlB0cjxFdmVudD4gRG9j
dW1lbnQ6OmNyZWF0ZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1JlZlB0cjxFdmVudD4gRG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KGNvbnN0IFN0cmluZyYg
ZXZlbnRUeXBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50
ID0gRXZlbnRGYWN0b3J5OjpjcmVhdGUoZXZlbnRUeXBlKTsKICAgICBpZiAoZXZlbnQpCkBAIC00
NDg2LDEyICs0NDg2LDEyIEBAIERvY3VtZW50JiBEb2N1bWVudDo6dG9wRG9jdW1lbnQoKSBjb25z
dAogICAgIHJldHVybiAqZG9jdW1lbnQ7CiB9CiAKLVBhc3NSZWZQdHI8QXR0cj4gRG9jdW1lbnQ6
OmNyZWF0ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
UmVmUHRyPEF0dHI+IERvY3VtZW50OjpjcmVhdGVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICByZXR1cm4gY3JlYXRlQXR0cmlidXRlTlMoU3Ry
aW5nKCksIG5hbWUsIGVjLCB0cnVlKTsKIH0KIAotUGFzc1JlZlB0cjxBdHRyPiBEb2N1bWVudDo6
Y3JlYXRlQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmlu
ZyYgcXVhbGlmaWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvb2wgc2hvdWxkSWdub3JlTmFt
ZXNwYWNlQ2hlY2tzKQorUmVmUHRyPEF0dHI+IERvY3VtZW50OjpjcmVhdGVBdHRyaWJ1dGVOUyhj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBF
eGNlcHRpb25Db2RlJiBlYywgYm9vbCBzaG91bGRJZ25vcmVOYW1lc3BhY2VDaGVja3MpCiB7CiAg
ICAgU3RyaW5nIHByZWZpeCwgbG9jYWxOYW1lOwogICAgIGlmICghcGFyc2VRdWFsaWZpZWROYW1l
KHF1YWxpZmllZE5hbWUsIHByZWZpeCwgbG9jYWxOYW1lLCBlYykpCkBAIC00NTI0LDYzICs0NTI0
LDYzIEBAIGJvb2wgRG9jdW1lbnQ6Omhhc1NWR1Jvb3ROb2RlKCkgY29uc3QKICAgICByZXR1cm4g
ZG9jdW1lbnRFbGVtZW50KCkgJiYgZG9jdW1lbnRFbGVtZW50KCktPmhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OnN2Z1RhZyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50Ojpl
bnN1cmVDYWNoZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlIHR5cGUpCitSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IERvY3VtZW50OjplbnN1cmVDYWNoZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBl
IHR5cGUpCiB7CiAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCku
YWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbj4oKnRoaXMsIHR5cGUpOwogfQogCi1Q
YXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6aW1hZ2VzKCkKK1JlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OmltYWdlcygpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNhY2hl
ZENvbGxlY3Rpb24oRG9jSW1hZ2VzKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4g
RG9jdW1lbnQ6OmFwcGxldHMoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YXBw
bGV0cygpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jQXBwbGV0cyk7
CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjplbWJlZHMoKQorUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW1iZWRzKCkKIHsKICAgICByZXR1cm4gZW5z
dXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NFbWJlZHMpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xs
ZWN0aW9uPiBEb2N1bWVudDo6cGx1Z2lucygpCitSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3Vt
ZW50OjpwbHVnaW5zKCkKIHsKICAgICAvLyBUaGlzIGlzIGFuIGFsaWFzIGZvciBlbWJlZHMoKSBy
ZXF1aXJlZCBmb3IgdGhlIEpTIERPTSBiaW5kaW5ncy4KICAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
Q29sbGVjdGlvbihEb2NFbWJlZHMpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBE
b2N1bWVudDo6c2NyaXB0cygpCitSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpzY3Jp
cHRzKCkKIHsKICAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NTY3JpcHRzKTsK
IH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmxpbmtzKCkKK1JlZlB0
cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmxpbmtzKCkKIHsKICAgICByZXR1cm4gZW5zdXJl
Q2FjaGVkQ29sbGVjdGlvbihEb2NMaW5rcyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IERvY3VtZW50Ojpmb3JtcygpCitSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50Ojpm
b3JtcygpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jRm9ybXMpOwog
fQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YW5jaG9ycygpCitSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjphbmNob3JzKCkKIHsKICAgICByZXR1cm4gZW5z
dXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NBbmNob3JzKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29s
bGVjdGlvbj4gRG9jdW1lbnQ6OmFsbCgpCitSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50
OjphbGwoKQogewogICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygp
LmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEFsbENvbGxlY3Rpb24+KCp0aGlzLCBEb2NBbGwpOwog
fQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVt
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3Vt
ZW50Ojp3aW5kb3dOYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBy
ZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0
aW9uPFdpbmRvd05hbWVDb2xsZWN0aW9uPigqdGhpcywgV2luZG93TmFtZWRJdGVtcywgbmFtZSk7
CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50Ojpkb2N1bWVudE5hbWVk
SXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBE
b2N1bWVudDo6ZG9jdW1lbnROYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsK
ICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRD
b2xsZWN0aW9uPERvY3VtZW50TmFtZUNvbGxlY3Rpb24+KCp0aGlzLCBEb2N1bWVudE5hbWVkSXRl
bXMsIG5hbWUpOwogfQpAQCAtNDY1Myw3ICs0NjUzLDcgQEAgYm9vbCBEb2N1bWVudDo6aXNUZWxl
cGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZCgpIGNvbnN0CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0
cjxYUGF0aEV4cHJlc3Npb24+IERvY3VtZW50OjpjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwKK1JlZlB0cjxYUGF0aEV4cHJlc3Npb24+IERvY3VtZW50OjpjcmVhdGVF
eHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aE5TUmVzb2x2ZXIqIHJlc29s
dmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUmIGVjKQogewpAQCAtNDY2MiwxNCArNDY2MiwxNCBAQCBQYXNzUmVm
UHRyPFhQYXRoRXhwcmVzc2lvbj4gRG9jdW1lbnQ6OmNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLAogICAgIHJldHVybiBtX3hwYXRoRXZhbHVhdG9yLT5jcmVhdGVFeHBy
ZXNzaW9uKGV4cHJlc3Npb24sIHJlc29sdmVyLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8WFBhdGhO
U1Jlc29sdmVyPiBEb2N1bWVudDo6Y3JlYXRlTlNSZXNvbHZlcihOb2RlKiBub2RlUmVzb2x2ZXIp
CitSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiBEb2N1bWVudDo6Y3JlYXRlTlNSZXNvbHZlcihOb2Rl
KiBub2RlUmVzb2x2ZXIpCiB7CiAgICAgaWYgKCFtX3hwYXRoRXZhbHVhdG9yKQogICAgICAgICBt
X3hwYXRoRXZhbHVhdG9yID0gWFBhdGhFdmFsdWF0b3I6OmNyZWF0ZSgpOwogICAgIHJldHVybiBt
X3hwYXRoRXZhbHVhdG9yLT5jcmVhdGVOU1Jlc29sdmVyKG5vZGVSZXNvbHZlcik7CiB9CiAKLVBh
c3NSZWZQdHI8WFBhdGhSZXN1bHQ+IERvY3VtZW50OjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sCitSZWZQdHI8WFBhdGhSZXN1bHQ+IERvY3VtZW50OjpldmFsdWF0ZShjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogY29udGV4dE5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlLApAQCAtNTEyMiw3
ICs1MTIyLDcgQEAgU3RyaW5nIERvY3VtZW50OjpkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29k
aW5nKGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAogICAgIHJldHVybiBzdHI7CiB9CiAKLVBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gRG9jdW1lbnQ6OmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rp
bmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdHIpIGNvbnN0CitSZWZQdHI8U3RyaW5nSW1wbD4g
RG9jdW1lbnQ6OmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBzdHIpIGNvbnN0CiB7CiAgICAgaWYgKG1fZGVjb2RlcikKICAgICAgICAgcmV0dXJu
IG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5kaXNwbGF5U3RyaW5nKHN0cik7CkBAIC01ODE3LDcgKzU4
MTcsNyBAQCB2b2lkIERvY3VtZW50OjpzZW5kV2lsbFJldmVhbEVkZ2VFdmVudHNJZk5lZWRlZChj
b25zdCBJbnRQb2ludCYgb2xkUG9zaXRpb24sIGNvbgogCiAjaWYgIVBMQVRGT1JNKElPUykKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotUGFzc1JlZlB0cjxUb3VjaD4gRG9jdW1lbnQ6OmNyZWF0
ZVRvdWNoKERPTVdpbmRvdyogd2luZG93LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgaWRlbnRp
ZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50
IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSwg
RXhjZXB0aW9uQ29kZSYpIGNvbnN0CitSZWZQdHI8VG91Y2g+IERvY3VtZW50OjpjcmVhdGVUb3Vj
aChET01XaW5kb3cqIHdpbmRvdywgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGlkZW50aWZpZXIs
IGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRp
dXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UsIEV4Y2Vw
dGlvbkNvZGUmKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciBmcm9tIHRo
ZSBkb2N1bWVudGF0aW9uIGF0CiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGli
cmFyeS9zYWZhcmkvI2RvY3VtZW50YXRpb24vVXNlckV4cGVyaWVuY2UvUmVmZXJlbmNlL0RvY3Vt
ZW50QWRkaXRpb25zUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zL0RvY3VtZW50QWRkaXRpb25z
Lmh0bWwKQEAgLTYxODgsNyArNjE4OCw3IEBAIERvY3VtZW50JiBEb2N1bWVudDo6ZW5zdXJlVGVt
cGxhdGVEb2N1bWVudCgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQot
UGFzc1JlZlB0cjxGb250TG9hZGVyPiBEb2N1bWVudDo6Zm9udHMoKQorUmVmUHRyPEZvbnRMb2Fk
ZXI+IERvY3VtZW50Ojpmb250cygpCiB7CiAgICAgaWYgKCFtX2ZvbnRsb2FkZXIpCiAgICAgICAg
IG1fZm9udGxvYWRlciA9IEZvbnRMb2FkZXI6OmNyZWF0ZSh0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggMjYwOTY3MC4uODJjZjNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTI1Nywx
OSArMjU3LDE5IEBAIGVudW0gY2xhc3MgRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZSA6IHVuc2ln
bmVkIGNoYXIgewogCiBjbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwdWJs
aWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
b2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3Vt
ZW50PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRp
YyBSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZVhIVE1MKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50KGZyYW1lLCB1
cmwsIFhIVE1MRG9jdW1lbnRDbGFzcykpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
b2N1bWVudD4gY3JlYXRlTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihGcmFtZSogZnJhbWUsIGNvbnN0
IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZU5vblJlbmRlcmVk
UGxhY2Vob2xkZXIoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRG9jdW1lbnQoZnJhbWUsIHVybCwgRGVmYXVsdERvY3VtZW50
Q2xhc3MsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgc3Rh
dGljIFJlZlB0cjxEb2N1bWVudD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAog
ICAgIHZpcnR1YWwgfkRvY3VtZW50KCk7CiAKQEAgLTQyMSwyNCArNDIxLDI0IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaGFzTWFuaWZlc3QoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBQ
YXNzUmVmUHRyPFRleHQ+IGNyZWF0ZVRleHROb2RlKGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0gICAg
UGFzc1JlZlB0cjxDb21tZW50PiBjcmVhdGVDb21tZW50KGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0g
ICAgUGFzc1JlZlB0cjxDREFUQVNlY3Rpb24+IGNyZWF0ZUNEQVRBU2VjdGlvbihjb25zdCBTdHJp
bmcmIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPFByb2Nlc3NpbmdJbnN0
cnVjdGlvbj4gY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBjb25zdCBTdHJpbmcmIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEF0
dHI+IGNyZWF0ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICBQYXNzUmVmUHRyPEF0dHI+IGNyZWF0ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmLCBi
b29sIHNob3VsZElnbm9yZU5hbWVzcGFjZUNoZWNrcyA9IGZhbHNlKTsKLSAgICBQYXNzUmVmUHRy
PEVudGl0eVJlZmVyZW5jZT4gY3JlYXRlRW50aXR5UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8Tm9kZT4gaW1wb3J0Tm9kZShOb2Rl
KiBpbXBvcnRlZE5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBpbXBvcnROb2RlKGlt
cG9ydGVkTm9kZSwgdHJ1ZSwgZWMpOyB9Ci0gICAgUGFzc1JlZlB0cjxOb2RlPiBpbXBvcnROb2Rl
KE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50TlMoY29uc3QgU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHZp
cnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
YWdOYW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8VGV4dD4gY3JlYXRlVGV4dE5vZGUoY29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICBS
ZWZQdHI8Q29tbWVudD4gY3JlYXRlQ29tbWVudChjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIFJl
ZlB0cjxDREFUQVNlY3Rpb24+IGNyZWF0ZUNEQVRBU2VjdGlvbihjb25zdCBTdHJpbmcmIGRhdGEs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBjcmVh
dGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxBdHRyPiBjcmVhdGVBdHRyaWJ1
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPEF0dHI+
IGNyZWF0ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJp
bmcmIHF1YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNob3VsZElnbm9yZU5hbWVz
cGFjZUNoZWNrcyA9IGZhbHNlKTsKKyAgICBSZWZQdHI8RW50aXR5UmVmZXJlbmNlPiBjcmVhdGVF
bnRpdHlSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAg
UmVmUHRyPE5vZGU+IGltcG9ydE5vZGUoTm9kZSogaW1wb3J0ZWROb2RlLCBFeGNlcHRpb25Db2Rl
JiBlYykgeyByZXR1cm4gaW1wb3J0Tm9kZShpbXBvcnRlZE5vZGUsIHRydWUsIGVjKTsgfQorICAg
IFJlZlB0cjxOb2RlPiBpbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBF
eGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFs
aWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wgY3JlYXRlZEJ5
UGFyc2VyKTsKIAogICAgIGJvb2wgY3NzUmVnaW9uc0VuYWJsZWQoKSBjb25zdDsKICAgICBib29s
IGNzc0NvbXBvc2l0aW5nRW5hYmxlZCgpIGNvbnN0OwogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
LSAgICBQYXNzUmVmUHRyPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IHdlYmtpdEdldE5hbWVkRmxv
d3MoKTsKKyAgICBSZWZQdHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gd2Via2l0R2V0TmFtZWRG
bG93cygpOwogI2VuZGlmCiAKICAgICBOYW1lZEZsb3dDb2xsZWN0aW9uJiBuYW1lZEZsb3dzKCk7
CkBAIC00NDYsOCArNDQ2LDggQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGVsZW1lbnRGcm9tUG9p
bnQoaW50IHgsIGludCB5KSB7IHJldHVybiBlbGVtZW50RnJvbVBvaW50KExheW91dFBvaW50KHgs
IHkpKTsgfQogICAgIEVsZW1lbnQqIGVsZW1lbnRGcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IGNsaWVudFBvaW50KTsKIAotICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VGcm9tUG9p
bnQoaW50IHgsIGludCB5KTsKLSAgICBQYXNzUmVmUHRyPFJhbmdlPiBjYXJldFJhbmdlRnJvbVBv
aW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCk7CisgICAgUmVmUHRyPFJhbmdlPiBj
YXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSk7CisgICAgUmVmUHRyPFJhbmdlPiBjYXJl
dFJhbmdlRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCk7CiAKICAgICBT
dHJpbmcgcmVhZHlTdGF0ZSgpIGNvbnN0OwogCkBAIC00OTgsMjAgKzQ5OCwyMCBAQCBwdWJsaWM6
CiAgICAgRE9NU2VjdXJpdHlQb2xpY3kmIHNlY3VyaXR5UG9saWN5KCk7CiAjZW5kaWYKIAotICAg
IFBhc3NSZWZQdHI8Tm9kZT4gYWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNl
cHRpb25Db2RlJik7CisgICAgUmVmUHRyPE5vZGU+IGFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+
IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlv
bj4gaW1hZ2VzKCk7Ci0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZW1iZWRzKCk7Ci0g
ICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gcGx1Z2lucygpOyAvLyBhbiBhbGlhcyBmb3Ig
ZW1iZWRzKCkgcmVxdWlyZWQgZm9yIHRoZSBKUyBET00gYmluZGluZ3MuCi0gICAgUGFzc1JlZlB0
cjxIVE1MQ29sbGVjdGlvbj4gYXBwbGV0cygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IGxpbmtzKCk7Ci0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZm9ybXMoKTsKLSAg
ICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBhbmNob3JzKCk7Ci0gICAgUGFzc1JlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gc2NyaXB0cygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+
IGFsbCgpOworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gaW1hZ2VzKCk7CisgICAgUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPiBlbWJlZHMoKTsKKyAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHBs
dWdpbnMoKTsgLy8gYW4gYWxpYXMgZm9yIGVtYmVkcygpIHJlcXVpcmVkIGZvciB0aGUgSlMgRE9N
IGJpbmRpbmdzLgorICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gYXBwbGV0cygpOworICAgIFJl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4gbGlua3MoKTsKKyAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+
IGZvcm1zKCk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBhbmNob3JzKCk7CisgICAgUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiBzY3JpcHRzKCk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiBhbGwoKTsKIAotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHdpbmRvd05hbWVkSXRl
bXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiBkb2N1bWVudE5hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICBS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+IHdpbmRvd05hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKTsKKyAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGRvY3VtZW50TmFtZWRJdGVtcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwogCiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBh
cnQgb2YgRE9NKQogICAgIGJvb2wgaXNTeW50aGVzaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNT
eW50aGVzaXplZDsgfQpAQCAtNTc5LDE3ICs1NzksMTcgQEAgcHVibGljOgogCiAgICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQ
dHI8UmFuZ2U+IGNyZWF0ZVJhbmdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFJhbmdl
PiBjcmVhdGVSYW5nZSgpOwogCi0gICAgUGFzc1JlZlB0cjxOb2RlSXRlcmF0b3I+IGNyZWF0ZU5v
ZGVJdGVyYXRvcihOb2RlKiByb290LCB1bnNpZ25lZCB3aGF0VG9TaG93LAorICAgIFJlZlB0cjxO
b2RlSXRlcmF0b3I+IGNyZWF0ZU5vZGVJdGVyYXRvcihOb2RlKiByb290LCB1bnNpZ25lZCB3aGF0
VG9TaG93LAogICAgICAgICBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+LCBib29sIGV4cGFuZEVudGl0
eVJlZmVyZW5jZXMsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8VHJlZVdhbGtl
cj4gY3JlYXRlVHJlZVdhbGtlcihOb2RlKiByb290LCB1bnNpZ25lZCB3aGF0VG9TaG93LAorICAg
IFJlZlB0cjxUcmVlV2Fsa2VyPiBjcmVhdGVUcmVlV2Fsa2VyKE5vZGUqIHJvb3QsIHVuc2lnbmVk
IHdoYXRUb1Nob3csCiAgICAgICAgIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4sIGJvb2wgZXhwYW5k
RW50aXR5UmVmZXJlbmNlcywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gU3BlY2lhbCBzdXBw
b3J0IGZvciBlZGl0aW5nCi0gICAgUGFzc1JlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBjcmVh
dGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7Ci0gICAgUGFzc1JlZlB0cjxUZXh0PiBjcmVhdGVFZGl0
aW5nVGV4dE5vZGUoY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRp
b24+IGNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKKyAgICBSZWZQdHI8VGV4dD4gY3JlYXRl
RWRpdGluZ1RleHROb2RlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCByZWNhbGNTdHlsZShT
dHlsZTo6Q2hhbmdlID0gU3R5bGU6Ok5vQ2hhbmdlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKQEAgLTY4Nyw3ICs2ODcsNyBAQCBwdWJsaWM6CiAKICAg
ICBDU1NTdHlsZVNoZWV0JiBlbGVtZW50U2hlZXQoKTsKICAgICAKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpOworICAgIHZpcnR1YWwgUmVmUHRy
PERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKICAgICBEb2N1bWVudFBhcnNlciogcGFy
c2VyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZXIuZ2V0KCk7IH0KICAgICBTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIqIHNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpIGNvbnN0OwogICAgIApAQCAt
ODE4LDcgKzgxOCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNo
V2luZG93RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+ID0g
MCk7CiAgICAgdm9pZCBkaXNwYXRjaFdpbmRvd0xvYWRFdmVudCgpOwogCi0gICAgUGFzc1JlZlB0
cjxFdmVudD4gY3JlYXRlRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudFR5cGUsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBSZWZQdHI8RXZlbnQ+IGNyZWF0ZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnRU
eXBlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBrZWVwIHRyYWNrIG9mIHdoYXQgdHlwZXMg
b2YgZXZlbnQgbGlzdGVuZXJzIGFyZSByZWdpc3RlcmVkLCBzbyB3ZSBkb24ndAogICAgIC8vIGRp
c3BhdGNoIGV2ZW50cyB1bm5lY2Vzc2FyaWx5CkBAIC05NzIsNyArOTcyLDcgQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgdm9pZCBhcHBseVhTTFRyYW5zZm9ybShQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24qIHBpKTsKLSAgICBQYXNzUmVmUHRyPERvY3VtZW50PiB0cmFuc2Zvcm1Tb3Vy
Y2VEb2N1bWVudCgpIHsgcmV0dXJuIG1fdHJhbnNmb3JtU291cmNlRG9jdW1lbnQ7IH0KKyAgICBS
ZWZQdHI8RG9jdW1lbnQ+IHRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkgeyByZXR1cm4gbV90cmFu
c2Zvcm1Tb3VyY2VEb2N1bWVudDsgfQogICAgIHZvaWQgc2V0VHJhbnNmb3JtU291cmNlRG9jdW1l
bnQoRG9jdW1lbnQqIGRvYykgeyBtX3RyYW5zZm9ybVNvdXJjZURvY3VtZW50ID0gZG9jOyB9CiAK
ICAgICB2b2lkIHNldFRyYW5zZm9ybVNvdXJjZShzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNmb3JtU291
cmNlPik7CkBAIC05ODMsMTYgKzk4MywxNiBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgZG9tVHJl
ZVZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2RvbVRyZWVWZXJzaW9uOyB9CiAKICAgICAvLyBY
UGF0aEV2YWx1YXRvciBtZXRob2RzCi0gICAgUGFzc1JlZlB0cjxYUGF0aEV4cHJlc3Npb24+IGNy
ZWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhj
ZXB0aW9uQ29kZSYgZWMpOwotICAgIFBhc3NSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiBjcmVhdGVO
U1Jlc29sdmVyKE5vZGUgKm5vZGVSZXNvbHZlcik7Ci0gICAgUGFzc1JlZlB0cjxYUGF0aFJlc3Vs
dD4gZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGNvbnRleHROb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aFJlc3VsdCogcmVzdWx0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICBS
ZWZQdHI8WFBhdGhFeHByZXNzaW9uPiBjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQ
YXRoTlNSZXNvbHZlciogcmVzb2x2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgUmVmUHRyPFhQYXRoTlNSZXNv
bHZlcj4gY3JlYXRlTlNSZXNvbHZlcihOb2RlICpub2RlUmVzb2x2ZXIpOworICAgIFJlZlB0cjxY
UGF0aFJlc3VsdD4gZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogY29udGV4dE5vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBYUGF0aE5TUmVzb2x2ZXIqIHJlc29sdmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFhQYXRoUmVzdWx0KiByZXN1bHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlJiBlYyk7CiAKICAgICBlbnVtIFBlbmRp
bmdTaGVldExheW91dCB7IE5vTGF5b3V0V2l0aFBlbmRpbmdTaGVldHMsIERpZExheW91dFdpdGhQ
ZW5kaW5nU2hlZXRzLCBJZ25vcmVMYXlvdXRXaXRoUGVuZGluZ1NoZWV0cyB9OwogCkBAIC0xMDY4
LDcgKzEwNjgsNyBAQCBwdWJsaWM6CiAgICAgVGV4dFJlc291cmNlRGVjb2RlciogZGVjb2Rlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgY29u
c3Q7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVu
Y29kaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pIGNvbnN0OworICAgIFJlZlB0cjxTdHJpbmdJ
bXBsPiBkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4pIGNvbnN0OwogICAgIHZvaWQgZGlzcGxheUJ1ZmZlck1vZGlmaWVkQnlFbmNvZGluZyhMQ2hh
ciogYnVmZmVyLCB1bnNpZ25lZCBsZW4pIGNvbnN0CiAgICAgewogICAgICAgICBkaXNwbGF5QnVm
ZmVyTW9kaWZpZWRCeUVuY29kaW5nSW50ZXJuYWwoYnVmZmVyLCBsZW4pOwpAQCAtMTI2OSw3ICsx
MjY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbigp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0g
ICAgUGFzc1JlZlB0cjxGb250TG9hZGVyPiBmb250cygpOworICAgIFJlZlB0cjxGb250TG9hZGVy
PiBmb250cygpOwogI2VuZGlmCiAKICAgICB2b2lkIGVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlw
dChET01XcmFwcGVyV29ybGQmKTsKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZvaWQgY2xlYXJYTUxWZXJzaW9uKCkgeyBtX3htbFZlcnNpb24gPSBTdHJpbmcoKTsgfQog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50PiBjbG9uZURvY3VtZW50V2l0aG91dENo
aWxkcmVuKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWZQdHI8RG9jdW1lbnQ+IGNsb25lRG9jdW1l
bnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
Tm9kZTsKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcg
bm9kZU5hbWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5v
ZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlw
ZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZSBmaW5hbDsK
ICAgICB2b2lkIGNsb25lRGF0YUZyb21Eb2N1bWVudChjb25zdCBEb2N1bWVudCYpOwogCiAgICAg
dmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBvdmVycmlkZSBmaW5hbCB7
IHJlZigpOyB9CkBAIC0xMzUyLDcgKzEzNTIsNyBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogbm9k
ZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExheW91dFBvaW50KiBs
b2NhbFBvaW50ID0gbnVsbHB0cik7CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBl
bnN1cmVDYWNoZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlKTsKKyAgICBSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUpOwogCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIHZvaWQgZGlzcGF0Y2hGdWxsU2NyZWVuQ2hhbmdl
T3JFcnJvckV2ZW50KERlcXVlPFJlZlB0cjxOb2RlPj4mLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50TmFtZSwgYm9vbCBzaG91bGROb3RpZnlNZWRpYUVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuY3BwCmluZGV4IDY3ZWNiMTcuLjhhZjQ3NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTM2LDEyICszNiwxMiBAQCBEb2N1bWVu
dEZyYWdtZW50OjpEb2N1bWVudEZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwgQ29uc3RydWN0
aW9uVHlwZSBjb25zdHJ1YwogewogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERv
Y3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIE5v
ZGU6OkNyZWF0ZURvY3VtZW50RnJhZ21lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVudEZyYWdtZW50OjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IERvY3VtZW50RnJhZ21lbnQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBOb2Rl
OjpDcmVhdGVEb2N1bWVudEZyYWdtZW50KSk7CiB9CkBAIC03MSwxMiArNzEsMTIgQEAgYm9vbCBE
b2N1bWVudEZyYWdtZW50OjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlIHR5cGUpIGNvbnN0CiAg
ICAgfQogfQogCi1QYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50RnJhZ21lbnQ6OmNsb25lTm9kZShi
b29sIGRlZXApCitSZWZQdHI8Tm9kZT4gRG9jdW1lbnRGcmFnbWVudDo6Y2xvbmVOb2RlKGJvb2wg
ZGVlcCkKIHsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY2xvbmUgPSBjcmVhdGUoZG9j
dW1lbnQoKSk7CiAgICAgaWYgKGRlZXApCiAgICAgICAgIGNsb25lQ2hpbGROb2RlcyhjbG9uZS5n
ZXQoKSk7Ci0gICAgcmV0dXJuIGNsb25lLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gY2xvbmU7CiB9
CiAKIHZvaWQgRG9jdW1lbnRGcmFnbWVudDo6cGFyc2VIVE1MKGNvbnN0IFN0cmluZyYgc291cmNl
LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250
ZW50UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKaW5kZXggNTQzYjU5
ZS4uMTBmY2E1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBAIC0zMyw4
ICszMyw4IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIERvY3VtZW50
RnJhZ21lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZShEb2N1bWVu
dCYpOworICAgIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKIAogICAgIHZvaWQgcGFyc2VIVE1MKGNvbnN0IFN0cmluZyYsIEVs
ZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5ID0gQWxsb3dTY3JpcHRp
bmdDb250ZW50KTsKICAgICBib29sIHBhcnNlWE1MKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIGNv
bnRleHRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5ID0gQWxsb3dTY3JpcHRpbmdDb250ZW50
KTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
Tm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAppbmRleCAwYTY4NzEyLi4yOTIxZjMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBOb2RlOjpOb2Rl
VHlwZSBEb2N1bWVudFR5cGU6Om5vZGVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gRE9DVU1FTlRf
VFlQRV9OT0RFOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50VHlwZTo6Y2xvbmVOb2Rl
KGJvb2wgLypkZWVwKi8pCitSZWZQdHI8Tm9kZT4gRG9jdW1lbnRUeXBlOjpjbG9uZU5vZGUoYm9v
bCAvKmRlZXAqLykKIHsKICAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIG1fbmFtZSwgbV9w
dWJsaWNJZCwgbV9zeXN0ZW1JZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgKaW5kZXgg
YTliN2E2YS4uZDkyMTVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaApAQCAtMzIsNyAr
MzIsNyBAQCBjbGFzcyBOYW1lZE5vZGVNYXA7CiAKIGNsYXNzIERvY3VtZW50VHlwZSBmaW5hbCA6
IHB1YmxpYyBOb2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudFR5
cGU+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCkKKyAgICBzdGF0aWMgUmVm
UHRyPERvY3VtZW50VHlwZT4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHB1YmxpY0lkLCBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEb2N1bWVudFR5cGUoZG9jdW1lbnQs
IG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCkpOwogICAgIH0KQEAgLTUyLDcgKzUyLDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIFVSTCBiYXNlVVJJKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE5vZGVU
eXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5v
ZGU+IGNsb25lTm9kZShib29sIGRlZXApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5v
ZGU+IGNsb25lTm9kZShib29sIGRlZXApIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIG1fbmFtZTsK
ICAgICBTdHJpbmcgbV9wdWJsaWNJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAxNjc1YTFk
Li4yMzY0NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgc3Rh
dGljIEF0dHIqIGZpbmRBdHRyTm9kZUluTGlzdChWZWN0b3I8UmVmUHRyPEF0dHI+PiYgYXR0ck5v
ZGVMaXN0LCBjb25zdCBRdWFsaWYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0
cjxFbGVtZW50PiBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVFbGVtZW50
KSk7CiB9CkBAIC0yODcsMTkgKzI4NywxOSBAQCBERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoRWxlbWVudCwgZXJyb3IpOwogREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKEVsZW1lbnQsIGZvY3VzKTsKIERFRklORV9WSVJUVUFMX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihFbGVtZW50LCBsb2FkKTsKIAotUGFzc1JlZlB0cjxOb2RlPiBFbGVtZW50
OjpjbG9uZU5vZGUoYm9vbCBkZWVwKQorUmVmUHRyPE5vZGU+IEVsZW1lbnQ6OmNsb25lTm9kZShi
b29sIGRlZXApCiB7CiAgICAgcmV0dXJuIGRlZXAgPyBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4o
KSA6IGNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1l
bnQ+IEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhDaGlsZHJlbigpCitSZWZQdHI8RWxlbWVudD4g
RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKCkKIHsKICAgICBSZWZQdHI8RWxlbWVu
dD4gY2xvbmUgPSBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKICAgICBjbG9uZUNoaWxk
Tm9kZXMoY2xvbmUuZ2V0KCkpOwogICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7CiB9CiAKLVBh
c3NSZWZQdHI8RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCkK
K1JlZlB0cjxFbGVtZW50PiBFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKQog
ewogICAgIFJlZlB0cjxFbGVtZW50PiBjbG9uZSA9IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1
dGVzQW5kQ2hpbGRyZW4oKTsKICAgICAvLyBUaGlzIHdpbGwgY2F0Y2ggSFRNTCBlbGVtZW50cyBp
biB0aGUgd3JvbmcgbmFtZXNwYWNlIHRoYXQgYXJlIG5vdCBjb3JyZWN0bHkgY29waWVkLgpAQCAt
MzEwLDEyICszMTAsMTIgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBFbGVtZW50OjpjbG9uZUVsZW1l
bnRXaXRob3V0Q2hpbGRyZW4oKQogICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7CiB9CiAKLVBh
c3NSZWZQdHI8RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNB
bmRDaGlsZHJlbigpCitSZWZQdHI8RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91
dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpCiB7CiAgICAgcmV0dXJuIGRvY3VtZW50KCkuY3JlYXRl
RWxlbWVudCh0YWdRTmFtZSgpLCBmYWxzZSk7CiB9CiAKLVBhc3NSZWZQdHI8QXR0cj4gRWxlbWVu
dDo6ZGV0YWNoQXR0cmlidXRlKHVuc2lnbmVkIGluZGV4KQorUmVmUHRyPEF0dHI+IEVsZW1lbnQ6
OmRldGFjaEF0dHJpYnV0ZSh1bnNpZ25lZCBpbmRleCkKIHsKICAgICBBU1NFUlQoZWxlbWVudERh
dGEoKSk7CiAKQEAgLTg4MSw3ICs4ODEsNyBAQCBJbnRSZWN0IEVsZW1lbnQ6OmJvdW5kc0luUm9v
dFZpZXdTcGFjZSgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxDbGllbnRS
ZWN0TGlzdD4gRWxlbWVudDo6Z2V0Q2xpZW50UmVjdHMoKQorUmVmUHRyPENsaWVudFJlY3RMaXN0
PiBFbGVtZW50OjpnZXRDbGllbnRSZWN0cygpCiB7CiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIApAQCAtODk4LDcgKzg5OCw3IEBAIFBhc3NS
ZWZQdHI8Q2xpZW50UmVjdExpc3Q+IEVsZW1lbnQ6OmdldENsaWVudFJlY3RzKCkKICAgICByZXR1
cm4gQ2xpZW50UmVjdExpc3Q6OmNyZWF0ZShxdWFkcyk7CiB9CiAKLVBhc3NSZWZQdHI8Q2xpZW50
UmVjdD4gRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkKK1JlZlB0cjxDbGllbnRSZWN0
PiBFbGVtZW50OjpnZXRCb3VuZGluZ0NsaWVudFJlY3QoKQogewogICAgIGRvY3VtZW50KCkudXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKQEAgLTE0ODIsNyArMTQ4Miw3
IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgb2xkUm9vdC0+ZGlzdHJp
YnV0b3IoKS5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHRoaXMpOwogfQogCi1QYXNzUmVmUHRyPFNo
YWRvd1Jvb3Q+IEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1Jvb3QoRXhjZXB0aW9uQ29kZSYgZWMpCitS
ZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVudDo6Y3JlYXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBpZiAoYWx3YXlzQ3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpKQogICAg
ICAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CkBAIC0xNjkwLDcgKzE2OTAsNyBAQCBj
b25zdCBWZWN0b3I8UmVmUHRyPEF0dHI+PiYgRWxlbWVudDo6YXR0ck5vZGVMaXN0KCkKICAgICBy
ZXR1cm4gKmF0dHJOb2RlTGlzdEZvckVsZW1lbnQoKnRoaXMpOwogfQogCi1QYXNzUmVmUHRyPEF0
dHI+IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGUoQXR0ciogYXR0ck5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGUoQXR0ciogYXR0
ck5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghYXR0ck5vZGUpIHsKICAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKQEAgLTE3MjgsMTIgKzE3MjgsMTIgQEAgUGFzc1Jl
ZlB0cjxBdHRyPiBFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlKEF0dHIqIGF0dHJOb2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gb2xkQXR0ck5vZGUucmVsZWFzZSgpOwogfQogCi1Q
YXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGVOUyhBdHRyKiBhdHRyLCBF
eGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxBdHRyPiBFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2Rl
TlMoQXR0ciogYXR0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgcmV0dXJuIHNldEF0dHJp
YnV0ZU5vZGUoYXR0ciwgZWMpOwogfQogCi1QYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OnJlbW92
ZUF0dHJpYnV0ZU5vZGUoQXR0ciogYXR0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8QXR0
cj4gRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyKiBhdHRyLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBpZiAoIWF0dHIpIHsKICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKQEAgLTE4NDAsNyArMTg0MCw3IEBAIGJvb2wgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTlMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0CiAgICAgcmV0
dXJuIHJlbW92ZUF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG5h
bWVzcGFjZVVSSSkpOwogfQogCi1QYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmdldEF0dHJpYnV0
ZU5vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCitSZWZQdHI8QXR0cj4gRWxlbWVu
dDo6Z2V0QXR0cmlidXRlTm9kZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAg
ICBpZiAoIWVsZW1lbnREYXRhKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTg1MSw3ICsxODUx
LDcgQEAgUGFzc1JlZlB0cjxBdHRyPiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxOYW1lKQogICAgIHJldHVybiBlbnN1cmVBdHRyKGF0dHJpYnV0ZS0+
bmFtZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxBdHRyPiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2Rl
TlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxOYW1lKQorUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5vZGVOUyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUpCiB7CiAgICAgaWYgKCFlbGVtZW50RGF0YSgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI3
NjIsNyArMjc2Miw3IEBAIHZvaWQgRWxlbWVudDo6ZGlkUmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICBkaXNwYXRjaFN1YnRy
ZWVNb2RpZmllZEV2ZW50KCk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEVsZW1l
bnQ6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlIHR5cGUpCitSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IEVsZW1lbnQ6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKENv
bGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgaWYgKEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9u
ID0gY2FjaGVkSFRNTENvbGxlY3Rpb24odHlwZSkpCiAgICAgICAgIHJldHVybiBjb2xsZWN0aW9u
OwpAQCAtMjc5NSwxNCArMjc5NSwxNCBAQCB2b2lkIEVsZW1lbnQ6OnNldFNhdmVkTGF5ZXJTY3Jv
bGxPZmZzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KS5zZXRTYXZlZExheWVyU2Nyb2xsT2Zmc2V0KHNpemUpOwogfQogCi1QYXNzUmVmUHRyPEF0dHI+
IEVsZW1lbnQ6OmF0dHJJZkV4aXN0cyhjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQorUmVmUHRy
PEF0dHI+IEVsZW1lbnQ6OmF0dHJJZkV4aXN0cyhjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQog
ewogICAgIGlmIChhdXRvKiBhdHRyTm9kZUxpc3QgPSBhdHRyTm9kZUxpc3RGb3JFbGVtZW50KCp0
aGlzKSkKICAgICAgICAgcmV0dXJuIGZpbmRBdHRyTm9kZUluTGlzdCgqYXR0ck5vZGVMaXN0LCBu
YW1lKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBdHRyPiBFbGVtZW50
OjplbnN1cmVBdHRyKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCitSZWZQdHI8QXR0cj4gRWxl
bWVudDo6ZW5zdXJlQXR0cihjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIGF1dG8m
IGF0dHJOb2RlTGlzdCA9IGVuc3VyZUF0dHJOb2RlTGlzdEZvckVsZW1lbnQoKnRoaXMpOwogICAg
IFJlZlB0cjxBdHRyPiBhdHRyTm9kZSA9IGZpbmRBdHRyTm9kZUluTGlzdChhdHRyTm9kZUxpc3Qs
IG5hbWUpOwpAQCAtMjkyMSwxMCArMjkyMSwxMCBAQCB2b2lkIEVsZW1lbnQ6OmRpZERldGFjaFJl
bmRlcmVycygpCiAgICAgQVNTRVJUKGhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKTsK
IH0KIAotUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5k
ZXJlcihSZW5kZXJTdHlsZSYpCitSZWZQdHI8UmVuZGVyU3R5bGU+IEVsZW1lbnQ6OmN1c3RvbVN0
eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmKQogewogICAgIEFTU0VSVChoYXNDdXN0b21TdHls
ZVJlc29sdmVDYWxsYmFja3MoKSk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIHZvaWQgRWxlbWVudDo6Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoY29uc3QgRWxl
bWVudCYgb3RoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA5NTFmNDY2Li4wMzNjMmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKQEAgLTU5LDcgKzU5LDcgQEAgZW51bSBTcGVsbGNoZWNrQXR0cmlidXRl
U3RhdGUgewogCiBjbGFzcyBFbGVtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5FbGVtZW50KCk7CiAK
ICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFib3J0KTsKQEAgLTIyMCw4ICsy
MjAsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGJvdW5kc0luUm9v
dFZpZXdTcGFjZSgpOwogCi0gICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gZ2V0Q2xpZW50
UmVjdHMoKTsKLSAgICBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IGdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpOworICAgIFJlZlB0cjxDbGllbnRSZWN0TGlzdD4gZ2V0Q2xpZW50UmVjdHMoKTsKKyAgICBS
ZWZQdHI8Q2xpZW50UmVjdD4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgCiAgICAgLy8g
UmV0dXJucyB0aGUgYWJzb2x1dGUgYm91bmRpbmcgYm94IHRyYW5zbGF0ZWQgaW50byBjbGllbnQg
Y29vcmRpbmF0ZXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBjbGllbnRSZWN0KCkgY29u
c3Q7CkBAIC0yMzEsMTYgKzIzMSwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdmVBdHRyaWJ1
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKICAgICBib29sIHJlbW92ZUF0dHJpYnV0ZU5T
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsTmFtZSk7CiAKLSAgICBQYXNzUmVmUHRyPEF0dHI+IGRldGFjaEF0dHJpYnV0ZSh1bnNpZ25l
ZCBpbmRleCk7CisgICAgUmVmUHRyPEF0dHI+IGRldGFjaEF0dHJpYnV0ZSh1bnNpZ25lZCBpbmRl
eCk7CiAKLSAgICBQYXNzUmVmUHRyPEF0dHI+IGdldEF0dHJpYnV0ZU5vZGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKTsKLSAgICBQYXNzUmVmUHRyPEF0dHI+IGdldEF0dHJpYnV0ZU5vZGVOUyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bE5hbWUpOwotICAgIFBhc3NSZWZQdHI8QXR0cj4gc2V0QXR0cmlidXRlTm9kZShBdHRyKiwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8QXR0cj4gc2V0QXR0cmlidXRlTm9kZU5TKEF0
dHIqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxBdHRyPiByZW1vdmVBdHRyaWJ1
dGVOb2RlKEF0dHIqLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPEF0dHI+IGdldEF0dHJp
YnV0ZU5vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICBSZWZQdHI8QXR0cj4gZ2V0
QXR0cmlidXRlTm9kZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsTmFtZSk7CisgICAgUmVmUHRyPEF0dHI+IHNldEF0dHJpYnV0ZU5v
ZGUoQXR0ciosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8QXR0cj4gc2V0QXR0cmlidXRl
Tm9kZU5TKEF0dHIqLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPEF0dHI+IHJlbW92ZUF0
dHJpYnV0ZU5vZGUoQXR0ciosIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8QXR0
cj4gYXR0cklmRXhpc3RzKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICBQYXNzUmVmUHRyPEF0
dHI+IGVuc3VyZUF0dHIoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIFJlZlB0cjxBdHRyPiBh
dHRySWZFeGlzdHMoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIFJlZlB0cjxBdHRyPiBlbnN1
cmVBdHRyKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8
QXR0cj4+JiBhdHRyTm9kZUxpc3QoKTsKIApAQCAtMjY3LDggKzI2Nyw4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBQYXNz
UmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhDaGlsZHJlbigpOwotICAgIFBhc3NSZWZQ
dHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7CisgICAgUmVmUHRyPEVs
ZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhDaGlsZHJlbigpOworICAgIFJlZlB0cjxFbGVtZW50PiBj
bG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKIAogICAgIHZvaWQgbm9ybWFsaXplQXR0cmli
dXRlcygpOwogICAgIFN0cmluZyBub2RlTmFtZVByZXNlcnZpbmdDYXNlKCkgY29uc3Q7CkBAIC0z
MTUsNyArMzE1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFkb3dSb290KiBz
aGFkb3dSb290KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxTaGFkb3dS
b290PiBjcmVhdGVTaGFkb3dSb290KEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2RlJik7CiAK
ICAgICBTaGFkb3dSb290KiB1c2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Q7CiAgICAgU2hhZG93
Um9vdCYgZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwpAQCAtNTQwLDcgKzU0MCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCk7CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0YWNo
UmVuZGVyZXJzKCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21T
dHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSk7CisgICAgdmlydHVhbCBS
ZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBh
cmVudFN0eWxlKTsKIAogICAgIHZvaWQgc2V0QmVmb3JlUHNldWRvRWxlbWVudChQYXNzUmVmUHRy
PFBzZXVkb0VsZW1lbnQ+KTsKICAgICB2b2lkIHNldEFmdGVyUHNldWRvRWxlbWVudChQYXNzUmVm
UHRyPFBzZXVkb0VsZW1lbnQ+KTsKQEAgLTU2NCw3ICs1NjQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBjbGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7ICAgIAogICAgIHZvaWQgc2V0
VGFiSW5kZXhFeHBsaWNpdGx5KHNob3J0KTsKIAotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlKTsKKyAgICBSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rpb25U
eXBlKTsKICAgICBIVE1MQ29sbGVjdGlvbiogY2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlv
blR5cGUpOwogCiAgICAgLy8gY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKCkgZXhpc3RzIHRvIHNoYXJl
IGNvZGUgYmV0d2VlbgpAQCAtNjI1LDggKzYyNSw4IEBAIHByaXZhdGU6CiAKICAgICAvLyBjbG9u
ZU5vZGUgaXMgcHJpdmF0ZSBzbyB0aGF0IG5vbi12aXJ0dWFsIGNsb25lRWxlbWVudFdpdGhDaGls
ZHJlbiBhbmQgY2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuCiAgICAgLy8gYXJlIHVzZWQgaW5z
dGVhZC4KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdp
dGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBj
bG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxFbGVtZW50
PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCk7CiAKICAgICB2b2lk
IGFkZFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290Pik7CiAgICAgdm9pZCByZW1vdmVT
aGFkb3dSb290KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJl
bmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuY3BwCmluZGV4IDgy
Y2NiNmUuLmU3YjJmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZl
cmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuY3BwCkBA
IC0zMSw3ICszMSw3IEBAIGlubGluZSBFbnRpdHlSZWZlcmVuY2U6OkVudGl0eVJlZmVyZW5jZShE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZW50aXR5CiB7CiB9CiAKLVBhc3NSZWZQ
dHI8RW50aXR5UmVmZXJlbmNlPiBFbnRpdHlSZWZlcmVuY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFN0cmluZyYgZW50aXR5TmFtZSkKK1JlZlB0cjxFbnRpdHlSZWZlcmVuY2U+
IEVudGl0eVJlZmVyZW5jZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiBlbnRpdHlOYW1lKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRW50aXR5UmVmZXJlbmNl
KGRvY3VtZW50LCBlbnRpdHlOYW1lKSk7CiB9CkBAIC00Niw3ICs0Niw3IEBAIE5vZGU6Ok5vZGVU
eXBlIEVudGl0eVJlZmVyZW5jZTo6bm9kZVR5cGUoKSBjb25zdAogICAgIHJldHVybiBFTlRJVFlf
UkVGRVJFTkNFX05PREU7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gRW50aXR5UmVmZXJlbmNlOjpj
bG9uZU5vZGUoYm9vbCkKK1JlZlB0cjxOb2RlPiBFbnRpdHlSZWZlcmVuY2U6OmNsb25lTm9kZShi
b29sKQogewogICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQoKSwgbV9lbnRpdHlOYW1lKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuaAppbmRleCA0YTY0YTA5Li42MTY0YjlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5oCkBAIC0yOCwxNCArMjgsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbnRpdHlSZWZlcmVuY2UgZmluYWwgOiBwdWJsaWMg
Q29udGFpbmVyTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RW50aXR5UmVm
ZXJlbmNlPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGVudGl0eU5hbWUpOworICAg
IHN0YXRpYyBSZWZQdHI8RW50aXR5UmVmZXJlbmNlPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBT
dHJpbmcmIGVudGl0eU5hbWUpOwogCiBwcml2YXRlOgogICAgIEVudGl0eVJlZmVyZW5jZShEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYgZW50aXR5TmFtZSk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBu
b2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2Rl
KGJvb2wgZGVlcCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2Rl
KGJvb2wgZGVlcCkgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgbV9lbnRpdHlOYW1lOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAppbmRleCBjYWM3ZWExLi43YjJlMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00
MDMsNyArNDAzLDcgQEAgdm9pZCBOb2RlOjpzZXROb2RlVmFsdWUoY29uc3QgU3RyaW5nJiAvKm5v
ZGVWYWx1ZSovLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBCeSBkZWZhdWx0LCBzZXR0aW5n
IG5vZGVWYWx1ZSBoYXMgbm8gZWZmZWN0LgogfQogCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2Rl
OjpjaGlsZE5vZGVzKCkKK1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Y2hpbGROb2RlcygpCiB7CiAg
ICAgaWYgKGlzPENvbnRhaW5lck5vZGU+KCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGVuc3VyZVJh
cmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuZW5zdXJlQ2hpbGROb2RlTGlzdChkb3duY2FzdDxD
b250YWluZXJOb2RlPigqdGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggZmRiMWU0Ny4uZThmNTI5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCkBAIC0xNzcsNyArMTc3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBwdHJk
aWZmX3QgcHJldmlvdXNTaWJsaW5nTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKE5vZGUsIG1fcHJldmlvdXMpOyB9CiAgICAgTm9kZSogbmV4dFNpYmxpbmcoKSBjb25zdCB7
IHJldHVybiBtX25leHQ7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG5leHRTaWJsaW5nTWVtb3J5
T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5vZGUsIG1fbmV4dCk7IH0KLSAgICBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiBjaGlsZE5vZGVzKCk7CisgICAgUmVmUHRyPE5vZGVMaXN0PiBj
aGlsZE5vZGVzKCk7CiAgICAgTm9kZSogZmlyc3RDaGlsZCgpIGNvbnN0OwogICAgIE5vZGUqIGxh
c3RDaGlsZCgpIGNvbnN0OwogICAgIGJvb2wgaGFzQXR0cmlidXRlcygpIGNvbnN0OwpAQCAtMjAx
LDcgKzIwMSw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlKEV4
Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGhhc0NoaWxkTm9kZXMoKSBjb25zdCB7IHJldHVybiBm
aXJzdENoaWxkKCk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJv
b2wgZGVlcCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRl
ZXApID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggMjIwNjUyYS4u
YjRkZmZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgaW5saW5lIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3QKIHsKIH0KIAotUGFz
c1JlZlB0cjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKK1JlZlB0cjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IFByb2Nlc3NpbmdJbnN0cnVj
dGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNv
bnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbihkb2N1bWVudCwgdGFyZ2V0LCBkYXRhKSk7CiB9CkBAIC03OSw3ICs3OSw3IEBA
IE5vZGU6Ok5vZGVUeXBlIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6bm9kZVR5cGUoKSBjb25zdAog
ICAgIHJldHVybiBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU7CiB9CiAKLVBhc3NSZWZQdHI8
Tm9kZT4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjbG9uZU5vZGUoYm9vbCAvKmRlZXAqLykKK1Jl
ZlB0cjxOb2RlPiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNsb25lTm9kZShib29sIC8qZGVlcCov
KQogewogICAgIC8vIEZJWE1FOiBJcyBpdCBhIHByb2JsZW0gdGhhdCB0aGlzIGRvZXMgbm90IGNv
cHkgbV9sb2NhbEhyZWY/CiAgICAgLy8gV2hhdCBhYm91dCBvdGhlciBkYXRhIG1lbWJlcnM/CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKaW5kZXggM2Q3MjNhYS4u
MGU0ZThiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaApA
QCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDU1NTdHlsZVNoZWV0OwogCiBjbGFzcyBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24gZmluYWwgOiBwdWJsaWMgQ2hhcmFjdGVyRGF0YSwgcHJpdmF0ZSBDYWNoZWRT
dHlsZVNoZWV0Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBj
b25zdCBTdHJpbmcmIGRhdGEpOworICAgIHN0YXRpYyBSZWZQdHI8UHJvY2Vzc2luZ0luc3RydWN0
aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5n
JiBkYXRhKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oKTsKIAogICAgIGNv
bnN0IFN0cmluZyYgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KQEAgLTU4LDcg
KzU4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVk
RnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVu
dC5jcHAKaW5kZXggM2NkNGYwOC4uN2MyYmNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVt
ZW50LmNwcApAQCAtNzAsNyArNzAsNyBAQCBQc2V1ZG9FbGVtZW50Ojp+UHNldWRvRWxlbWVudCgp
CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwc2V1ZG9FbGVtZW50RGVzdHJveWVkKGRv
Y3VtZW50KCkucGFnZSgpLCB0aGlzKTsKIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUHNl
dWRvRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5
bGUpCitSZWZQdHI8UmVuZGVyU3R5bGU+IFBzZXVkb0VsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVu
ZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKQogewogICAgIHJldHVybiBtX2hvc3RFbGVt
ZW50LT5yZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3BzZXVkb0lkLCAmcGFyZW50
U3R5bGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKaW5kZXggNGJlNWM5Ni4uNTQw
MzBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1
YmxpYzoKICAgICBFbGVtZW50KiBob3N0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdEVs
ZW1lbnQ7IH0KICAgICB2b2lkIGNsZWFySG9zdEVsZW1lbnQoKSB7IG1faG9zdEVsZW1lbnQgPSBu
dWxscHRyOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0
eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hS
ZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRl
eCBhZDhhM2VkLi5hYTExZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTc3LDcgKzc3
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENo
aWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKICAgICAvLyBTaGFkb3dSb290cyBzaG91bGQgbmV2ZXIg
YmUgY2xvbmVkLgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCkg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9k
ZShib29sKSBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGRuJ3QgaGFwcGVuLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4
MzQKICAgICBib29sIGlzT3JwaGFuKCkgY29uc3QgeyByZXR1cm4gIWhvc3RFbGVtZW50KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFn
bWVudC5oCmluZGV4IGU3NGI0M2EuLmY4YjYxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJh
Z21lbnQgZmluYWwgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgRWxlbWVudCogaG9zdCkKKyAgICBzdGF0aWMgUmVmUHRy
PFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IEVsZW1lbnQqIGhvc3QpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIGhvc3QpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dC5jcHAKaW5kZXggZDU0YmRhZS4uYjliOGMwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNw
cApAQCAtMzgsMTcgKzM4LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxUZXh0PiBUZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRh
dGEpCitSZWZQdHI8VGV4dD4gVGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiBkYXRhKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dChkb2N1bWVudCwg
ZGF0YSwgQ3JlYXRlVGV4dCkpOwogfQogCi1QYXNzUmVmUHRyPFRleHQ+IFRleHQ6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGEpCitSZWZQ
dHI8VGV4dD4gVGV4dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHQoZG93bmNh
c3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBkYXRhLCBDcmVhdGVUZXh0KSk7CiB9CiAKLVBhc3NSZWZQ
dHI8VGV4dD4gVGV4dDo6Y3JlYXRlRWRpdGluZ1RleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBTdHJpbmcmIGRhdGEpCitSZWZQdHI8VGV4dD4gVGV4dDo6Y3JlYXRlRWRpdGluZ1RleHQoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUZXh0KGRvY3VtZW50LCBkYXRhLCBDcmVhdGVFZGl0aW5nVGV4dCkpOwogfQpAQCAt
NTgsNyArNTgsNyBAQCBUZXh0Ojp+VGV4dCgpCiAgICAgQVNTRVJUKCFyZW5kZXJlcigpKTsKIH0K
IAotUGFzc1JlZlB0cjxUZXh0PiBUZXh0OjpzcGxpdFRleHQodW5zaWduZWQgb2Zmc2V0LCBFeGNl
cHRpb25Db2RlJiBlYykKK1JlZlB0cjxUZXh0PiBUZXh0OjpzcGxpdFRleHQodW5zaWduZWQgb2Zm
c2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7CiAKQEAgLTEyNCw3ICsxMjQs
NyBAQCBTdHJpbmcgVGV4dDo6d2hvbGVUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRv
U3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8VGV4dD4gVGV4dDo6cmVwbGFjZVdob2xlVGV4dChj
b25zdCBTdHJpbmcmIG5ld1RleHQsIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPFRleHQ+IFRleHQ6
OnJlcGxhY2VXaG9sZVRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0LCBFeGNlcHRpb25Db2RlJikK
IHsKICAgICAvLyBSZW1vdmUgYWxsIGFkamFjZW50IHRleHQgbm9kZXMsIGFuZCByZXBsYWNlIHRo
ZSBjb250ZW50cyBvZiB0aGlzIG9uZS4KIApAQCAtMTY5LDEyICsxNjksMTEgQEAgTm9kZTo6Tm9k
ZVR5cGUgVGV4dDo6bm9kZVR5cGUoKSBjb25zdAogICAgIHJldHVybiBURVhUX05PREU7CiB9CiAK
LVBhc3NSZWZQdHI8Tm9kZT4gVGV4dDo6Y2xvbmVOb2RlKGJvb2wgLypkZWVwKi8pCitSZWZQdHI8
Tm9kZT4gVGV4dDo6Y2xvbmVOb2RlKGJvb2wgLypkZWVwKi8pCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZShkb2N1bWVudCgpLCBkYXRhKCkpOwogfQogCi0KIHN0YXRpYyBib29sIGlzU1ZHU2hhZG93VGV4
dChUZXh0KiB0ZXh0KQogewogICAgIE5vZGUqIHBhcmVudE5vZGUgPSB0ZXh0LT5wYXJlbnROb2Rl
KCk7CkBAIC0yMDQsMTIgKzIwMywxMiBAQCBib29sIFRleHQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9k
ZVR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFRleHQ+IFRl
eHQ6OnZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmUHRyPFRleHQ+IFRleHQ6
OnZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUo
ZG9jdW1lbnQoKSwgZGF0YSk7CiB9CiAKLVBhc3NSZWZQdHI8VGV4dD4gVGV4dDo6Y3JlYXRlV2l0
aExlbmd0aExpbWl0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCB1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoTGltaXQpCitSZWZQdHI8VGV4dD4gVGV4dDo6Y3Jl
YXRlV2l0aExlbmd0aExpbWl0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRh
LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoTGltaXQpCiB7CiAgICAgdW5zaWduZWQg
ZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCmluZGV4IDYwZGVlZjkuLmY2
NzkzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RleHQuaApAQCAtMzUsMTkgKzM1LDE5IEBAIGNsYXNzIFRleHQgOiBwdWJs
aWMgQ2hhcmFjdGVyRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRl
ZmF1bHRMZW5ndGhMaW1pdCA9IDEgPDwgMTY7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0
PiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxUZXh0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYpOwot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHQ+IGNyZWF0ZVdpdGhMZW5ndGhMaW1pdChEb2N1bWVu
dCYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvc2l0aW9uSW5TdHJpbmcsIHVuc2lnbmVkIGxl
bmd0aExpbWl0ID0gZGVmYXVsdExlbmd0aExpbWl0KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
ZXh0PiBjcmVhdGVFZGl0aW5nVGV4dChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0
YXRpYyBSZWZQdHI8VGV4dD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAg
c3RhdGljIFJlZlB0cjxUZXh0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0
IFN0cmluZyYpOworICAgIHN0YXRpYyBSZWZQdHI8VGV4dD4gY3JlYXRlV2l0aExlbmd0aExpbWl0
KERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgcG9zaXRpb25JblN0cmluZywgdW5z
aWduZWQgbGVuZ3RoTGltaXQgPSBkZWZhdWx0TGVuZ3RoTGltaXQpOworICAgIHN0YXRpYyBSZWZQ
dHI8VGV4dD4gY3JlYXRlRWRpdGluZ1RleHQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKIAog
ICAgIHZpcnR1YWwgflRleHQoKTsKIAotICAgIFBhc3NSZWZQdHI8VGV4dD4gc3BsaXRUZXh0KHVu
c2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxUZXh0PiBzcGxpdFRl
eHQodW5zaWduZWQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBET00gTGV2ZWwg
MzogaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtQ29yZS9jb3JlLmh0bWwjSUQtMTMx
MjI5NTc3MgogCiAgICAgU3RyaW5nIHdob2xlVGV4dCgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8
VGV4dD4gcmVwbGFjZVdob2xlVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgUmVmUHRyPFRleHQ+IHJlcGxhY2VXaG9sZVRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIAogICAgIFJlbmRlclB0cjxSZW5kZXJUZXh0PiBjcmVhdGVUZXh0UmVuZGVy
ZXIoY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICAKQEAgLTY0LDEwICs2NCwxMCBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dD4gdmlydHVhbENyZWF0ZShjb25zdCBT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxUZXh0PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0
cmluZyYpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgdm9pZCBmb3JtYXRGb3JEZWJ1
Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDVjMWJmNTAu
LjExMTc4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwCkBAIC0xMTIsMTIgKzExMiwxMiBAQCBib29sIGlzRW1wdHlGb250VGFnKGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQsIFNob3VsZFN0eWxlQXR0cmlidXRlQmVFbXB0eSBzaG91bGRTdAogICAgIHJl
dHVybiBoYXNOb0F0dHJpYnV0ZU9yT25seVN0eWxlQXR0cmlidXRlKGRvd25jYXN0PEhUTUxGb250
RWxlbWVudD4oZWxlbWVudCksIHNob3VsZFN0eWxlQXR0cmlidXRlQmVFbXB0eSk7CiB9CiAKLXN0
YXRpYyBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUZvbnRFbGVtZW50KERvY3VtZW50JiBkb2N1
bWVudCkKK3N0YXRpYyBSZWZQdHI8RWxlbWVudD4gY3JlYXRlRm9udEVsZW1lbnQoRG9jdW1lbnQm
IGRvY3VtZW50KQogewogICAgIHJldHVybiBjcmVhdGVIVE1MRWxlbWVudChkb2N1bWVudCwgZm9u
dFRhZyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVN0eWxlU3BhbkVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVTdHlsZVNw
YW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gY3JlYXRlSFRNTEVs
ZW1lbnQoZG9jdW1lbnQsIHNwYW5UYWcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5oCmluZGV4IDIyNWIwZDIuLjEwZjYxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBlbnVtIFNo
b3VsZFN0eWxlQXR0cmlidXRlQmVFbXB0eSB7IEFsbG93Tm9uRW1wdHlTdHlsZUF0dHJpYnV0ZSwg
U3R5bGVBdHRyaWJ1dGVTaAogYm9vbCBpc0VtcHR5Rm9udFRhZyhjb25zdCBFbGVtZW50KiwgU2hv
dWxkU3R5bGVBdHRyaWJ1dGVCZUVtcHR5ID0gU3R5bGVBdHRyaWJ1dGVTaG91bGRCZUVtcHR5KTsK
IGJvb2wgaXNMZWdhY3lBcHBsZVN0eWxlU3Bhbihjb25zdCBOb2RlKik7CiBib29sIGlzU3R5bGVT
cGFuT3JTcGFuV2l0aE9ubHlTdHlsZUF0dHJpYnV0ZShjb25zdCBFbGVtZW50Kik7Ci1QYXNzUmVm
UHRyPEhUTUxFbGVtZW50PiBjcmVhdGVTdHlsZVNwYW5FbGVtZW50KERvY3VtZW50Jik7CitSZWZQ
dHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQoRG9jdW1lbnQmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydExpc3RDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlz
dENvbW1hbmQuY3BwCmluZGV4IDU4ZTVjNzEuLjYxNjI2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBO
b2RlKiBlbmNsb3NpbmdMaXN0Q2hpbGQoTm9kZSogbm9kZSwgTm9kZSogbGlzdE5vZGUpCiAgICAg
cmV0dXJuIGxpc3RDaGlsZDsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlz
dENvbW1hbmQ6Omluc2VydExpc3QoRG9jdW1lbnQmIGRvY3VtZW50LCBUeXBlIHR5cGUpCitSZWZQ
dHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21tYW5kOjppbnNlcnRMaXN0KERvY3VtZW50JiBk
b2N1bWVudCwgVHlwZSB0eXBlKQogewogICAgIFJlZlB0cjxJbnNlcnRMaXN0Q29tbWFuZD4gaW5z
ZXJ0Q29tbWFuZCA9IGNyZWF0ZShkb2N1bWVudCwgdHlwZSk7CiAgICAgaW5zZXJ0Q29tbWFuZC0+
YXBwbHkoKTsKQEAgLTY0LDcgKzY0LDcgQEAgSFRNTEVsZW1lbnQqIEluc2VydExpc3RDb21tYW5k
OjpmaXhPcnBoYW5lZExpc3RDaGlsZChOb2RlKiBub2RlKQogICAgIHJldHVybiBsaXN0RWxlbWVu
dC5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlzdENvbW1hbmQ6
Om1lcmdlV2l0aE5laWdoYm9yaW5nTGlzdHMoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gcGFzc2Vk
TGlzdCkKK1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlzdENvbW1hbmQ6Om1lcmdlV2l0aE5l
aWdoYm9yaW5nTGlzdHMoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gcGFzc2VkTGlzdCkKIHsKICAg
ICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGxpc3QgPSBwYXNzZWRMaXN0OwogICAgIEVsZW1lbnQqIHBy
ZXZpb3VzTGlzdCA9IGxpc3QtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKQEAgLTc1LDE0ICs3
NSwxNCBAQCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBJbnNlcnRMaXN0Q29tbWFuZDo6bWVyZ2VX
aXRoTmVpZ2hib3JpbmdMaXN0cyhQYXNzUmVmUHRyPAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBFbGVtZW50KiBzaWJsaW5nID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcobGlz
dC5nZXQoKSk7CiAgICAgaWYgKCFpczxIVE1MRWxlbWVudD4oc2libGluZykpCi0gICAgICAgIHJl
dHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIGxpc3Q7CiAKICAgICBSZWZQdHI8
SFRNTEVsZW1lbnQ+IG5leHRMaXN0ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KHNpYmxpbmcpOwog
ICAgIGlmIChjYW5NZXJnZUxpc3RzKGxpc3QuZ2V0KCksIG5leHRMaXN0LmdldCgpKSkgewogICAg
ICAgICBtZXJnZUlkZW50aWNhbEVsZW1lbnRzKGxpc3QsIG5leHRMaXN0KTsKLSAgICAgICAgcmV0
dXJuIG5leHRMaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIG5leHRMaXN0OwogICAgIH0K
LSAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIGJvb2wg
SW5zZXJ0TGlzdENvbW1hbmQ6OnNlbGVjdGlvbkhhc0xpc3RPZlR5cGUoY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uLCBjb25zdCBRdWFsaWZpZWROYW1lJiBsaXN0VGFnKQpAQCAtMzMx
LDcgKzMzMSw3IEBAIHN0YXRpYyBFbGVtZW50KiBhZGphY2VudEVuY2xvc2luZ0xpc3QoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiBwb3MsIGNvbnN0IFZpc2libGVQCiAgICAgcmV0dXJuIGxpc3ROb2Rl
OwogfQogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBJbnNlcnRMaXN0Q29tbWFuZDo6bGlzdGlm
eVBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mIG9yaWdpbmFsU3RhcnQsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGxpc3RUYWcpCitSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21t
YW5kOjpsaXN0aWZ5UGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgb3JpZ2luYWxTdGFy
dCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGlzdFRhZykKIHsKICAgICBWaXNpYmxlUG9zaXRpb24g
c3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKG9yaWdpbmFsU3RhcnQsIENhblNraXBPdmVyRWRpdGlu
Z0JvdW5kYXJ5KTsKICAgICBWaXNpYmxlUG9zaXRpb24gZW5kID0gZW5kT2ZQYXJhZ3JhcGgoc3Rh
cnQsIENhblNraXBPdmVyRWRpdGluZ0JvdW5kYXJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0TGlzdENvbW1hbmQuaAppbmRleCA5YTQ2NTliLi42YjBmYzI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5oCkBAIC0zNywxMiArMzcsMTIgQEAgY2xh
c3MgSW5zZXJ0TGlzdENvbW1hbmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgewogcHVi
bGljOgogICAgIGVudW0gVHlwZSB7IE9yZGVyZWRMaXN0LCBVbm9yZGVyZWRMaXN0IH07CiAKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNlcnRMaXN0Q29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgVHlwZSBsaXN0VHlwZSkKKyAgICBzdGF0aWMgUmVmUHRyPEluc2VydExpc3RDb21t
YW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUeXBlIGxpc3RUeXBlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNlcnRMaXN0Q29tbWFuZChkb2N1bWVudCwgbGlz
dFR5cGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gaW5z
ZXJ0TGlzdChEb2N1bWVudCYsIFR5cGUpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEVsZW1lbnQ+
IGluc2VydExpc3QoRG9jdW1lbnQmLCBUeXBlKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcHJl
c2VydmVzVHlwaW5nU3R5bGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTU0LDEwICs1
NCwxMCBAQCBwcml2YXRlOgogCiAgICAgSFRNTEVsZW1lbnQqIGZpeE9ycGhhbmVkTGlzdENoaWxk
KE5vZGUqKTsKICAgICBib29sIHNlbGVjdGlvbkhhc0xpc3RPZlR5cGUoY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uLCBjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4gbWVyZ2VXaXRoTmVpZ2hib3JpbmdMaXN0cyhQYXNzUmVmUHRyPEhUTUxF
bGVtZW50Pik7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtZXJnZVdpdGhOZWlnaGJvcmluZ0xp
c3RzKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+KTsKICAgICB2b2lkIGRvQXBwbHlGb3JTaW5nbGVQ
YXJhZ3JhcGgoYm9vbCBmb3JjZUNyZWF0ZUxpc3QsIGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lJiwg
UmFuZ2UqIGN1cnJlbnRTZWxlY3Rpb24pOwogICAgIHZvaWQgdW5saXN0aWZ5UGFyYWdyYXBoKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgb3JpZ2luYWxTdGFydCwgSFRNTEVsZW1lbnQqIGxpc3ROb2Rl
LCBOb2RlKiBsaXN0Q2hpbGROb2RlKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBsaXN0
aWZ5UGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgb3JpZ2luYWxTdGFydCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbGlzdFRhZyk7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBsaXN0aWZ5
UGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgb3JpZ2luYWxTdGFydCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbGlzdFRhZyk7CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2xpc3RFbGVt
ZW50OwogICAgIFR5cGUgbV90eXBlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAKaW5kZXggZjNiYTllNS4uNjc5NjQ4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKICAgICAKIGNsYXNzIEZUUERpcmVjdG9yeURvY3VtZW50
UGFyc2VyIGZpbmFsIDogcHVibGljIEhUTUxEb2N1bWVudFBhcnNlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShIVE1M
RG9jdW1lbnQmIGRvY3VtZW50KQorICAgIHN0YXRpYyBSZWZQdHI8RlRQRGlyZWN0b3J5RG9jdW1l
bnRQYXJzZXI+IGNyZWF0ZShIVE1MRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcihkb2N1bWVudCkp
OwogICAgIH0KQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGFyc2VBbmRB
cHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYXBwZW5kRW50cnkoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNpemUsIGNvbnN0IFN0cmluZyYgZGF0ZSwgYm9v
bCBpc0RpcmVjdG9yeSk7ICAgIAotICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlVERGb3JG
aWxlbmFtZShjb25zdCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gY3JlYXRlVERGb3JG
aWxlbmFtZShjb25zdCBTdHJpbmcmKTsKIAogICAgIFJlZlB0cjxIVE1MVGFibGVFbGVtZW50PiBt
X3RhYmxlRWxlbWVudDsKIApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9j
dW1lbnRQYXJzZXI6OmFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluCiAgICAgcm93RWxlbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudCwgSUdOT1JFX0VYQ0VQVElP
Tik7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6
OmNyZWF0ZVRERm9yRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK1JlZlB0cjxFbGVt
ZW50PiBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JGaWxlbmFtZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lKQogewogICAgIFN0cmluZyBmdWxsVVJMID0gZG9jdW1lbnQoKS0+
YmFzZVVSTCgpLnN0cmluZygpOwogICAgIGlmIChmdWxsVVJMLmVuZHNXaXRoKCcvJykpCkBAIC0y
NzMsMTkgKzI3MywxOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJzZUFu
ZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50cnko
ZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50
eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5t
b2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1l
bnREYXRhKFNldHRpbmdzKiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoU2V0dGluZ3MqIHNldHRpbmdzKQogewog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IDA7CiAgICAgaWYgKHNldHRpbmdzKQog
ICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShz
ZXR0aW5ncy0+ZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAg
ICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICVp
XG4iLCBidWZmZXItPnNpemUoKSk7Ci0gICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGJ1ZmZlcjsKIH0KICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6
OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1w
bGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCkt
PnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0
ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNl
dHRpbmdzKCkpLnJlbGVhc2UoKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Yg
c3RvcmluZyB0aGUgZGF0YSwgd2UnZCByYXRoZXIgYWN0dWFsbHkgcGFyc2UgdGhlIHRlbXBsYXRl
IGRhdGEgaW50byB0aGUgdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwKICAgICAvLyBzdG9yZSB0aGF0
IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBnZXQgYW4gRlRQIGRpcmVjdG9y
eSBsaXN0aW5nLiAgVGhlcmUgYXJlIGNvbXBsZXhpdGllcyB3aXRoIHRoaXMgCiAgICAgLy8gYXBw
cm9hY2ggdGhhdCBtYWtlIGl0IHdvcnRoIHB1dHRpbmcgdGhpcyBvZmYuCkBAIC00MzIsNyArNDMy
LDcgQEAgRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OkZUUERpcmVjdG9yeURvY3VtZW50KEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiB1cmwpCiAjZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudFBh
cnNlcj4gRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCitSZWZQdHI8RG9jdW1l
bnRQYXJzZXI+IEZUUERpcmVjdG9yeURvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogewogICAgIHJl
dHVybiBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaAppbmRleCA2ZDc4Y2Y2Li43Y2Ex
OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oCkBAIC0z
MywxNCArMzMsMTQgQEAgY2xhc3MgRE9NSW1wbGVtZW50YXRpb247CiAgICAgCiBjbGFzcyBGVFBE
aXJlY3RvcnlEb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZUUERpcmVjdG9yeURvY3VtZW50PiBjcmVhdGUoRnJhbWUq
IGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVmUHRyPEZUUERpcmVjdG9yeURv
Y3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRlRQRGlyZWN0b3J5RG9jdW1lbnQoZnJhbWUsIHVybCkp
OwogICAgIH0KIAogcHJpdmF0ZToKICAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSosIGNv
bnN0IFVSTCYpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRl
UGFyc2VyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNy
ZWF0ZVBhcnNlcigpIG92ZXJyaWRlOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMmZjNzg2My4u
MjU0NTg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAg
LTYzLDEyICs2MywxMiBAQCBIVE1MQW5jaG9yRWxlbWVudDo6SFRNTEFuY2hvckVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvYwogewogfQogCi1QYXNzUmVm
UHRyPEhUTUxBbmNob3JFbGVtZW50PiBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MQW5jaG9yRWxlbWVudD4gSFRNTEFuY2hvckVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MQW5jaG9yRWxlbWVudChhVGFnLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxB
bmNob3JFbGVtZW50PiBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MQW5jaG9yRWxlbWVu
dD4gSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQW5j
aG9yRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5oCmluZGV4IDE0YTI3OWQuLjBmMmQ1MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbmNob3JFbGVtZW50LmgKQEAgLTU3LDggKzU3LDggQEAgZW51bSB7CiAKIGNsYXNz
IEhUTUxBbmNob3JFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxIVE1MQW5jaG9yRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxBbmNob3JFbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxBbmNob3JFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB2aXJ0
dWFsIH5IVE1MQW5jaG9yRWxlbWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxl
dEVsZW1lbnQuY3BwCmluZGV4IDVjZmE1YjcuLmFmZTIxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEhUTUxBcHBsZXRFbGVt
ZW50OjpIVE1MQXBwbGV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYgZG9jCiAgICAgbV9zZXJ2aWNlVHlwZSA9ICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0
IjsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQXBwbGV0RWxlbWVudD4gSFRNTEFwcGxldEVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQs
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQorUmVmUHRyPEhUTUxBcHBsZXRFbGVtZW50PiBIVE1MQXBw
bGV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MQXBwbGV0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2Vy
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKaW5kZXggNGM4MTg4
Zi4uMjA1YWRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaApAQCAt
MjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxBcHBsZXRFbGVt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxBcHBsZXRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHN0YXRpYyBS
ZWZQdHI8SFRNTEFwcGxldEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEFwcGxl
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQ
YXJzZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCmluZGV4IGNhN2Rl
YzUuLjc5YTEwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgaW5saW5lIEhUTUxBcmVhRWxlbWVudDo6SFRNTEFyZWFFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JgogICAgIEFTU0VSVChoYXNUYWdO
YW1lKGFyZWFUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQXJlYUVsZW1lbnQ+IEhUTUxBcmVh
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKK1JlZlB0cjxIVE1MQXJlYUVsZW1lbnQ+IEhUTUxBcmVhRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxBcmVhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmgKaW5kZXggOGRiNzU4OS4uYjdj
MTU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5oCkBAIC0zNSw3ICszNSw3
IEBAIGNsYXNzIFBhdGg7CiAKIGNsYXNzIEhUTUxBcmVhRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MQW5jaG9yRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEFy
ZWFFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAg
c3RhdGljIFJlZlB0cjxIVE1MQXJlYUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIAogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4gbV9z
aGFwZSA9PSBEZWZhdWx0OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF1ZGlvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQu
Y3BwCmluZGV4IDY1NzM3YjAuLjMzM2QzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVk
aW9FbGVtZW50LmNwcApAQCAtMzksMTQgKzM5LDE0IEBAIEhUTUxBdWRpb0VsZW1lbnQ6OkhUTUxB
dWRpb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYXVkaW9UYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1M
QXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKK1Jl
ZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBh
cnNlcikKIHsKICAgICBSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gYXVkaW9FbGVtZW50KGFkb3B0
UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJz
ZXIpKSk7CiAgICAgYXVkaW9FbGVtZW50LT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4g
YXVkaW9FbGVtZW50LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYXVkaW9FbGVtZW50OwogfQogCi1Q
YXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckpT
Q29uc3RydWN0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHNyYykKK1JlZlB0
cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVj
dG9yKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBzcmMpCiB7CiAgICAgUmVmUHRy
PEhUTUxBdWRpb0VsZW1lbnQ+IGF1ZGlvID0gYWRvcHRSZWYobmV3IEhUTUxBdWRpb0VsZW1lbnQo
YXVkaW9UYWcsIGRvY3VtZW50LCBmYWxzZSkpOwogICAgIGF1ZGlvLT5zZXRQcmVsb2FkKCJhdXRv
Iik7CkBAIC01NSw3ICs1NSw3IEBAIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1
ZGlvRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCYKICAgICAgICAgYXVk
aW8tPnNjaGVkdWxlRGVsYXllZEFjdGlvbihIVE1MTWVkaWFFbGVtZW50OjpMb2FkTWVkaWFSZXNv
dXJjZSk7CiAgICAgfQogICAgIGF1ZGlvLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4g
YXVkaW8ucmVsZWFzZSgpOworICAgIHJldHVybiBhdWRpbzsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdWRpb0VsZW1lbnQuaAppbmRleCA1MThkNTRlLi5hMDFlMjEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaApAQCAtMzYsOCArMzYsOCBAQCBjbGFzcyBEb2N1
bWVudDsKIAogY2xhc3MgSFRNTEF1ZGlvRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MTWVkaWFF
bGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQXVkaW9FbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCk7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gY3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgc3JjKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxBdWRp
b0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IGNyZWF0ZUZvckpTQ29uc3RydWN0
b3IoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHNyYyk7CiAKIHByaXZhdGU6CiAgICAgSFRNTEF1
ZGlvRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJESUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEJESUVsZW1lbnQuaAppbmRleCBkNWVjNGJmLi5lZjgxYzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCRElFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQkRJRWxlbWVudC5oCkBAIC0yNyw3ICsyNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSFRNTEJESUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1l
bnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxCRElFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIHN0
YXRpYyBSZWZQdHI8SFRNTEJESUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxCRElFbGVtZW50KG5hbWUsIGRvY3VtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJSRWxlbWVudC5jcHAKaW5kZXggNjE3MzczMC4uNWE4NDg1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCkBAIC0zOSwxMiArMzksMTIgQEAgSFRNTEJSRWxlbWVu
dDo6SFRNTEJSRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYnJUYWcpKTsKIH0KIAotUGFzc1JlZlB0
cjxIVE1MQlJFbGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
KQorUmVmUHRyPEhUTUxCUkVsZW1lbnQ+IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQlJFbGVtZW50KGJyVGFn
LCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxCUkVsZW1lbnQ+IEhUTUxCUkVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQpCitSZWZQdHI8SFRNTEJSRWxlbWVudD4gSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxCUkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQlJFbGVtZW50LmgKaW5kZXggYjU0MzljNS4uZDU4YTZmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQlJFbGVtZW50LmgKQEAgLTMwLDggKzMwLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIVE1MQlJFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQlJFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQlJFbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MQlJF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxCUkVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAppbmRleCA3
ZThkMjc2Li44NzI3MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIGlubGluZSBIVE1MQmFzZUVsZW1lbnQ6OkhUTUxCYXNlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShiYXNlVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEJhc2VFbGVtZW50PiBIVE1M
QmFzZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTEJhc2VFbGVtZW50PiBIVE1MQmFzZUVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQmFzZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oCmluZGV4IGI3OTlmMWYu
LjBmMmQ1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaApAQCAtMjksNyAr
MjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxCYXNlRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTEJhc2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CisgICAgc3RhdGljIFJlZlB0cjxIVE1MQmFzZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIFVSTCBocmVmKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRIcmVmKGNvbnN0IEF0b21pY1N0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNl
Rm9udEVsZW1lbnQuaAppbmRleCAzMjhmNjZmLi5hNGJhZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEhUTUxCYXNlRm9udEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxCYXNlRm9udEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEhUTUxCYXNlRm9udEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBIVE1MQmFzZUZvbnRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQm9keUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1l
bnQuY3BwCmluZGV4IDYxM2Q4Y2UuLjU2NjliNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxC
b2R5RWxlbWVudC5jcHAKQEAgLTQ3LDEyICs0NywxMiBAQCBIVE1MQm9keUVsZW1lbnQ6OkhUTUxC
b2R5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bgogICAgIEFTU0VSVChoYXNUYWdOYW1lKGJvZHlUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1M
Qm9keUVsZW1lbnQ+IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkK
K1JlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxCb2R5RWxlbWVudChi
b2R5VGFnLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gSFRN
TEJvZHlFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gSFRNTEJvZHlFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEJvZHlFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaAppbmRleCAwZDRkNjBh
Li4wNmMyZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmgKQEAgLTMyLDgg
KzMyLDggQEAgY2xhc3MgRG9jdW1lbnQ7CiAKIGNsYXNzIEhUTUxCb2R5RWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TEJvZHlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
VE1MQm9keUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Cisg
ICAgc3RhdGljIFJlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5IVE1MQm9keUVsZW1lbnQoKTsKIAogICAg
IC8vIERlY2xhcmVkIHZpcnR1YWwgaW4gRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxC
dXR0b25FbGVtZW50LmNwcAppbmRleCBlNWM0MTA0Li5hMWZmNDgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgSFRN
TEJ1dHRvbkVsZW1lbnQ6OkhUTUxCdXR0b25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZQogICAgIEFTU0VSVChoYXNUYWdOYW1lKGJ1dHRvblRhZykpOwogfQogCi1Q
YXNzUmVmUHRyPEhUTUxCdXR0b25FbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1F
bGVtZW50KiBmb3JtKQorUmVmUHRyPEhUTUxCdXR0b25FbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TEJ1dHRvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaAppbmRleCAxZTAxZWM4Li5hYzY4N2Y5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTEJ1dHRvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
SFRNTEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTEJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
LCBIVE1MRm9ybUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxCdXR0b25FbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50
Kik7CiAKICAgICB2b2lkIHNldFR5cGUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDgyMDM2NTEuLjg0ODg4
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC04Niwx
MiArODYsMTIgQEAgSFRNTENhbnZhc0VsZW1lbnQ6OkhUTUxDYW52YXNFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2MKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShjYW52YXNUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gSFRNTENh
bnZhc0VsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTENhbnZh
c0VsZW1lbnQ+IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTENhbnZhc0VsZW1lbnQoY2FudmFzVGFnLCBk
b2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiBIVE1MQ2FudmFz
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKK1JlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gSFRNTENhbnZhc0VsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQ2FudmFzRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQpAQCAtNDY2LDcgKzQ2Niw3IEBAIFN0cmluZyBIVE1MQ2FudmFzRWxlbWVudDo6
dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0CiAg
ICAgcmV0dXJuIGJ1ZmZlcigpLT50b0RhdGFVUkwoZW5jb2RpbmdNaW1lVHlwZSwgcXVhbGl0eSk7
CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0SW1hZ2VE
YXRhKCkKK1JlZlB0cjxJbWFnZURhdGE+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRJbWFnZURhdGEo
KQogewogI2lmIEVOQUJMRShXRUJHTCkKICAgICBpZiAoIWlzM0QoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCA4YWJkZTc3Li5mZmRhNjgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzoK
IAogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8
SFRNTENhbnZhc0VsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8
SFRNTENhbnZhc0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKICAgICB2aXJ0dWFsIH5IVE1MQ2FudmFzRWxlbWVudCgpOwogCiAgICAgdm9pZCBhZGRPYnNl
cnZlcihDYW52YXNPYnNlcnZlciYpOwpAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBJ
bWFnZUJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CiAgICAgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29u
c3Q7CiAgICAgdm9pZCBjbGVhckNvcGllZEltYWdlKCk7Ci0gICAgUGFzc1JlZlB0cjxJbWFnZURh
dGE+IGdldEltYWdlRGF0YSgpOworICAgIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YSgp
OwogICAgIHZvaWQgbWFrZVByZXNlbnRhdGlvbkNvcHkoKTsKICAgICB2b2lkIGNsZWFyUHJlc2Vu
dGF0aW9uQ29weSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxETGlz
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmNwcApp
bmRleCAwMGQzMmNkLi4xMTQ0NjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxETGlzdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxl
bWVudC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgaW5saW5lIEhUTUxETGlzdEVsZW1lbnQ6OkhUTUxE
TGlzdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShkbFRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxETGlzdEVsZW1l
bnQ+IEhUTUxETGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTERMaXN0RWxlbWVudD4gSFRNTERMaXN0
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxETGlzdEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERMaXN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmgK
aW5kZXggYTExYWM1Yy4uZDgzOTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRExpc3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVt
ZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1M
RExpc3RFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxIVE1MRExpc3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MRExpc3RFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAg
SFRNTERMaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCmluZGV4IDFjMDNmMWMuLmNj
OTc1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcApA
QCAtNDMsMTIgKzQzLDEyIEBAIGlubGluZSBIVE1MRGF0YUxpc3RFbGVtZW50OjpIVE1MRGF0YUxp
c3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gSFRNTERhdGFMaXN0RWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxI
VE1MRGF0YUxpc3RFbGVtZW50PiBIVE1MRGF0YUxpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTERhdGFMaXN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MRGF0YUxpc3RFbGVtZW50OjpvcHRpb25z
KCkKK1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTERhdGFMaXN0RWxlbWVudDo6b3B0aW9ucygp
CiB7CiAgICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKERhdGFMaXN0T3B0aW9u
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oCmluZGV4IGNm
MWQzZmYuLjIxNjlhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFM
aXN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVu
dC5oCkBAIC00MCw5ICs0MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTERh
dGFMaXN0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTERhdGFMaXN0RWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgUGFz
c1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9ucygpOworICAgIFJlZlB0cjxIVE1MQ29sbGVj
dGlvbj4gb3B0aW9ucygpOwogCiAgICAgdm9pZCBvcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2Vk
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAppbmRleCAy
M2U1NjFjLi5hMzViNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1h
cnlRdWVyeVNlbGVjdG9yKCkKIAogY2xhc3MgRGV0YWlsc0NvbnRlbnRFbGVtZW50IGZpbmFsIDog
cHVibGljIEluc2VydGlvblBvaW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
ZXRhaWxzQ29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQ
dHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToK
ICAgICBEZXRhaWxzQ29udGVudEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNTgsMTQg
KzU4LDE0IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotUGFzc1JlZlB0cjxEZXRhaWxzQ29udGVu
dEVsZW1lbnQ+IERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCkKK1JlZlB0cjxEZXRhaWxzQ29udGVudEVsZW1lbnQ+IERldGFpbHNDb250ZW50RWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERl
dGFpbHNDb250ZW50RWxlbWVudChkb2N1bWVudCkpOwogfQogCiBjbGFzcyBEZXRhaWxzU3VtbWFy
eUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSW5zZXJ0aW9uUG9pbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7
CisgICAgc3RhdGljIFJlZlB0cjxEZXRhaWxzU3VtbWFyeUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVu
dCYpOwogCiAgICAgRWxlbWVudCogZmFsbGJhY2tTdW1tYXJ5KCkKICAgICB7CkBAIC04NywyMSAr
ODcsMjEgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi1QYXNzUmVmUHRyPERldGFpbHNTdW1tYXJ5
RWxlbWVudD4gRGV0YWlsc1N1bW1hcnlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
KQorUmVmUHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4gRGV0YWlsc1N1bW1hcnlFbGVtZW50Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIFJlZlB0cjxIVE1MU3VtbWFyeUVsZW1l
bnQ+IHN1bW1hcnkgPSBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZShzdW1tYXJ5VGFnLCBkb2N1
bWVudCk7CiAgICAgc3VtbWFyeS0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBk
ZWZhdWx0RGV0YWlsc1N1bW1hcnlUZXh0KCkpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAogICAg
IFJlZlB0cjxEZXRhaWxzU3VtbWFyeUVsZW1lbnQ+IGRldGFpbHNTdW1tYXJ5ID0gYWRvcHRSZWYo
bmV3IERldGFpbHNTdW1tYXJ5RWxlbWVudChkb2N1bWVudCkpOwogICAgIGRldGFpbHNTdW1tYXJ5
LT5hcHBlbmRDaGlsZChzdW1tYXJ5KTsKLSAgICByZXR1cm4gZGV0YWlsc1N1bW1hcnkucmVsZWFz
ZSgpOworICAgIHJldHVybiBkZXRhaWxzU3VtbWFyeTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRGV0
YWlsc0VsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MRGV0YWlsc0VsZW1l
bnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBSZWZQdHI8SFRNTERldGFpbHNFbGVtZW50
PiBkZXRhaWxzID0gYWRvcHRSZWYobmV3IEhUTUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogICAgIGRldGFpbHMtPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICBy
ZXR1cm4gZGV0YWlscy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKIEhUTUxE
ZXRhaWxzRWxlbWVudDo6SFRNTERldGFpbHNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERldGFpbHNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5oCmluZGV4IDA3M2NkNTkuLjY3MjU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuaApAQCAtMjcsNyArMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEhUTUxEZXRhaWxzRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERldGFpbHNFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEhUTUxEZXRhaWxzRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCk7CiAgICAgdm9pZCB0b2dnbGVPcGVu
KCk7CiAKICAgICBjb25zdCBFbGVtZW50KiBmaW5kTWFpblN1bW1hcnkoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5jcHAKaW5kZXggNWMzZDE1ZS4u
Nzc1MTQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAgaW5saW5lIEhUTUxEaXJlY3RvcnlFbGVtZW50OjpIVE1MRGly
ZWN0b3J5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLAogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGRpclRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxEaXJlY3RvcnlFbGVtZW50
PiBIVE1MRGlyZWN0b3J5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MRGlyZWN0b3J5RWxlbWVudD4gSFRN
TERpcmVjdG9yeUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRGlyZWN0
b3J5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGlyZWN0b3J5RWxlbWVudC5oCmluZGV4IGYxNzU5YWYuLjUzMWFhOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRGlyZWN0b3J5RWxlbWVudCBmaW5hbCA6IHB1
YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERp
cmVjdG9yeUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTERpcmVjdG9yeUVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAg
IEhUTUxEaXJlY3RvcnlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAppbmRleCBhOWFjMGJmLi5iZmNkNDM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcApAQCAtMzgsMTIgKzM4LDEy
IEBAIEhUTUxEaXZFbGVtZW50OjpIVE1MRGl2RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGl2VGFn
KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IEhUTUxEaXZFbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBIVE1MRGl2RWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxI
VE1MRGl2RWxlbWVudD4gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IEhU
TUxEaXZFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERpdkVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERpdkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaApp
bmRleCBmZjgxYjliLi40NTQwZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEaXZFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5o
CkBAIC0yOSw4ICsyOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTERpdkVs
ZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxEaXZFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MRGl2RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYp
OworICAgIHN0YXRpYyBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogcHJvdGVjdGVkOgogICAgIEhUTUxEaXZFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1l
bnQuY3BwCmluZGV4IDU4Mzc0ODIuLmE2OTNlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEhUTUxEb2N1bWVudDo6cmVsZWFzZUV2
ZW50cygpCiB7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6
Y3JlYXRlUGFyc2VyKCkKK1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gSFRNTERvY3VtZW50OjpjcmVh
dGVQYXJzZXIoKQogewogICAgIHJldHVybiBIVE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSgqdGhp
cyk7CiB9CkBAIC0yMzMsNyArMjMzLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gSFRN
TERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogLy8gbm90IHBhcnQgb2YgdGhlIERPTQogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MRG9jdW1lbnQ6OmNyZWF0
ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1Jl
ZlB0cjxFbGVtZW50PiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWlzVmFsaWROYW1lKG5h
bWUpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwpAQCAtMzQyLDcgKzM0
Miw3IEBAIGJvb2wgSFRNTERvY3VtZW50Ojppc0ZyYW1lU2V0KCkgY29uc3QKICAgICByZXR1cm4g
aXM8SFRNTEZyYW1lU2V0RWxlbWVudD4oYm9keSgpKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVu
dD4gSFRNTERvY3VtZW50OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QKK1Jl
ZlB0cjxEb2N1bWVudD4gSFRNTERvY3VtZW50OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVu
KCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlKG51bGxwdHIsIHVybCgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudC5oCmluZGV4IGE2NWMzNzkuLjllOWFhMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSFRNTERvY3VtZW50IDogcHVibGljIERvY3VtZW50LCBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxEb2N1
bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJl
ZlB0cjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRG9jdW1lbnQoZnJhbWUsIHVy
bCwgSFRNTERvY3VtZW50Q2xhc3MpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
VE1MRG9jdW1lbnQ+IGNyZWF0ZVN5bnRoZXNpemVkRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25z
dCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlU3ludGhl
c2l6ZWREb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgSFRNTERvY3Vt
ZW50Q2xhc3MsIFN5bnRoZXNpemVkKSk7CiAgICAgfQpAQCAtODYsMTIgKzg2LDExIEBAIHByb3Rl
Y3RlZDoKICAgICBIVE1MRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmLCBEb2N1bWVudENsYXNz
RmxhZ3MgPSAwLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDApOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
UmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1l
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZVNl
dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNl
cj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9j
dW1lbnQ+IGNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RG9jdW1lbnQ+IGNsb25lRG9jdW1lbnRXaXRob3V0
Q2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAogICAgIERvY3VtZW50T3JkZXJlZE1h
cCBtX2RvY3VtZW50TmFtZWRJdGVtOwogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX3dpbmRvd05h
bWVkSXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggY2E1ZWUwOS4uZDhj
ZDA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5h
bWVzcGFjZSBXVEY7CiAKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVm
UHRyPEhUTUxFbGVtZW50PiBIVE1MRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CkBAIC00NzMsNyArNDczLDcgQEAg
dm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgIG1lcmdlV2l0aE5leHRUZXh0Tm9kZShkb3duY2FzdDxUZXh0
PigqcHJldiksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBIVE1MRWxl
bWVudDo6dGV4dFRvRnJhZ21lbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBl
YykKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBIVE1MRWxlbWVudDo6dGV4dFRvRnJhZ21lbnQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1l
bnQoKSk7CiAgICAgdW5zaWduZWQgaW50IGksIGxlbmd0aCA9IHRleHQubGVuZ3RoKCk7CkBAIC04
MzcsNyArODM3LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0VHJhbnNsYXRlKGJvb2wgZW5hYmxl
KQogICAgIHNldEF0dHJpYnV0ZSh0cmFuc2xhdGVBdHRyLCBlbmFibGUgPyAieWVzIiA6ICJubyIp
OwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MRWxlbWVudDo6Y2hpbGRyZW4o
KQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MRWxlbWVudDo6Y2hpbGRyZW4oKQogewogICAg
IHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihOb2RlQ2hpbGRyZW4pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDc5Mzc3ZDYuLjZiNDg0ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmgKQEAgLTQwLDkgKzQwLDkgQEAgZW51bSBUcmFuc2xhdGVBdHRyaWJ1
dGVNb2RlIHsKIAogY2xhc3MgSFRNTEVsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRN
TEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYp
OwogCi0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gY2hpbGRyZW4oKTsKKyAgICBSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IGNoaWxkcmVuKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCkBAIC0xMjgsNyArMTI4
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVhbEZvcm0o
KSBjb25zdDsKIAogICAgIE5vZGUqIGluc2VydEFkamFjZW50KGNvbnN0IFN0cmluZyYgd2hlcmUs
IE5vZGUqIG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiB0ZXh0VG9GcmFnbWVudChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7
CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHRleHRUb0ZyYWdtZW50KGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgZGlyQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBBdG9taWNTdHJpbmcmKTsKICAgICB2b2lkIGFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRB
ZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50KiBjaGlsZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCA1OTM4MTczLi44NDkxYTdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgaW5s
aW5lIEhUTUxFbWJlZEVsZW1lbnQ6OkhUTUxFbWJlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQKICAgICBBU1NFUlQoaGFzVGFnTmFtZShlbWJlZFRhZykpOwog
fQogCi1QYXNzUmVmUHRyPEhUTUxFbWJlZEVsZW1lbnQ+IEhUTUxFbWJlZEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKQorUmVmUHRyPEhUTUxFbWJlZEVsZW1lbnQ+IEhUTUxFbWJlZEVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TEVtYmVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCmluZGV4IGIyZTY2MGYuLmJhYmNiMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCkBAIC0yOSw3ICsyOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTEVtYmVkRWxlbWVudCBmaW5hbCA6IHB1
YmxpYyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MRW1iZWRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEVtYmVk
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKTsKIAogcHJpdmF0ZToKICAgICBIVE1MRW1iZWRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCmluZGV4IDJmZTRhNjIuLjAxZGRm
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcApAQCAt
NTAsNyArNTAsNyBAQCBIVE1MRmllbGRTZXRFbGVtZW50Ojp+SFRNTEZpZWxkU2V0RWxlbWVudCgp
CiAgICAgICAgIGRvY3VtZW50KCkucmVtb3ZlRGlzYWJsZWRGaWVsZHNldEVsZW1lbnQoKTsKIH0K
IAotUGFzc1JlZlB0cjxIVE1MRmllbGRTZXRFbGVtZW50PiBIVE1MRmllbGRTZXRFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBI
VE1MRm9ybUVsZW1lbnQqIGZvcm0pCitSZWZQdHI8SFRNTEZpZWxkU2V0RWxlbWVudD4gSFRNTEZp
ZWxkU2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTEZpZWxkU2V0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwog
fQpAQCAtMTU5LDcgKzE1OSw3IEBAIEhUTUxMZWdlbmRFbGVtZW50KiBIVE1MRmllbGRTZXRFbGVt
ZW50OjpsZWdlbmQoKSBjb25zdAogICAgIHJldHVybiBjb25zdF9jYXN0PEhUTUxMZWdlbmRFbGVt
ZW50Kj4oY2hpbGRyZW5PZlR5cGU8SFRNTExlZ2VuZEVsZW1lbnQ+KCp0aGlzKS5maXJzdCgpKTsK
IH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTEZpZWxkU2V0RWxlbWVudDo6ZWxl
bWVudHMoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MRmllbGRTZXRFbGVtZW50OjplbGVt
ZW50cygpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKEZvcm1Db250
cm9scyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCmluZGV4
IDQwMTA0MGEuLmUxNzUwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZp
ZWxkU2V0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5oCkBAIC0zNCwxMCArMzQsMTAgQEAgY2xhc3MgSFRNTENvbGxlY3Rpb247CiAKIGNsYXNz
IEhUTUxGaWVsZFNldEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZpZWxkU2V0RWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCop
OworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZpZWxkU2V0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwogCiAgICAgSFRNTExl
Z2VuZEVsZW1lbnQqIGxlZ2VuZCgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IGVsZW1lbnRzKCk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBlbGVtZW50cygpOwog
CiAgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBhc3NvY2lhdGVkRWxl
bWVudHMoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcAppbmRleCA3ZDI3ZmZkLi5jMGRlNGMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEhUTUxG
b250RWxlbWVudDo6SFRNTEZvbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9udFRhZykpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxGb250RWxlbWVudD4gSFRNTEZvbnRFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhU
TUxGb250RWxlbWVudD4gSFRNTEZvbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTEZvbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9udEVsZW1lbnQuaAppbmRleCBlNWMzZGFhLi4xOTQwZjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvbnRFbGVtZW50LmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIVE1MRm9udEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGb250RWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRN
TEZvbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAg
ICAgCiAgICAgc3RhdGljIGJvb2wgY3NzVmFsdWVGcm9tRm9udFNpemVOdW1iZXIoY29uc3QgU3Ry
aW5nJiwgQ1NTVmFsdWVJRCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAKaW5kZXggZTM0OTdlZS4uNWNiZGI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcApAQCAtNzEsMTIgKzcxLDEyIEBAIEhUTUxGb3JtRWxlbWVudDo6SFRNTEZvcm1F
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVuCiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9ybVRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxGb3Jt
RWxlbWVudD4gSFRNTEZvcm1FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVm
UHRyPEhUTUxGb3JtRWxlbWVudD4gSFRNTEZvcm1FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZvcm1FbGVtZW50KGZvcm1U
YWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBIVE1MRm9y
bUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCitSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBIVE1MRm9ybUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRm9ybUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KQEAgLTY0MCw3ICs2NDAsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlSW1n
RWxlbWVudChIVE1MSW1hZ2VFbGVtZW50KiBlKQogICAgIHJlbW92ZUZyb21WZWN0b3IobV9pbWFn
ZUVsZW1lbnRzLCBlKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTEZvcm1F
bGVtZW50OjplbGVtZW50cygpCitSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxGb3JtRWxlbWVu
dDo6ZWxlbWVudHMoKQogewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihG
b3JtQ29udHJvbHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXgg
OGNiZTkyMC4uMzhhYWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBA
IC00NiwxMSArNDYsMTEgQEAgY2xhc3MgVGV4dEVuY29kaW5nOwogCiBjbGFzcyBIVE1MRm9ybUVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IGNyZWF0ZShE
b2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+SFRNTEZvcm1FbGVt
ZW50KCk7CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBlbGVtZW50cygpOworICAg
IFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZWxlbWVudHMoKTsKICAgICBib29sIGhhc05hbWVkRWxl
bWVudChjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBuYW1l
ZEVsZW1lbnRzKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50LmNwcAppbmRleCA1N2NmODIwLi5kNjU1ZjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgaW5saW5lIEhUTUxG
cmFtZUVsZW1lbnQ6OkhUTUxGcmFtZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQKICAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKIH0K
IAotUGFzc1JlZlB0cjxIVE1MRnJhbWVFbGVtZW50PiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRy
PEhUTUxGcmFtZUVsZW1lbnQ+IEhUTUxGcmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MRnJhbWVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oCmluZGV4IGIyOGU3NjQuLmQ0ZDYxYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTEZyYW1lRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MRnJhbWVFbGVtZW50QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TEZyYW1lRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZyYW1lRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgYm9vbCBoYXNGcmFtZUJvcmRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWVCb3JkZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHAKaW5kZXggN2E0ZDAyYi4uMmI0MTRjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEhUTUxGcmFt
ZVNldEVsZW1lbnQ6OkhUTUxGcmFtZVNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmCiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7
CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVudD4gSFRNTEZyYW1lU2V0RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKK1JlZlB0cjxIVE1MRnJhbWVTZXRFbGVtZW50PiBIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZyYW1lU2V0RWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAppbmRl
eCAyNzI5MzhjLi5hM2IyNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhU
TUxGcmFtZVNldEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGcmFtZVNldEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxGcmFtZVNl
dEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAg
IGJvb2wgaGFzRnJhbWVCb3JkZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lYm9yZGVyOyB9CiAg
ICAgYm9vbCBub1Jlc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9yZXNpemU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCmluZGV4IDFiN2JlN2MuLjYwYTFkMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcApAQCAtNDAsMTIgKzQwLDEyIEBAIEhUTUxIUkVs
ZW1lbnQ6OkhUTUxIUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50KQogICAgIEFTU0VSVChoYXNUYWdOYW1lKGhyVGFnKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SFRNTEhSRWxlbWVudD4gSFRNTEhSRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCkKK1JlZlB0cjxIVE1MSFJFbGVtZW50PiBIVE1MSFJFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEhSRWxlbWVudCho
clRhZywgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MSFJFbGVtZW50PiBIVE1MSFJF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQorUmVmUHRyPEhUTUxIUkVsZW1lbnQ+IEhUTUxIUkVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MSFJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5oCmluZGV4IDE1YmIyYTUuLjQ0MmY0MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5oCkBAIC0yOSw4ICsyOSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSFRNTEhSRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRN
TEhSRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MSFJF
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKIHByaXZh
dGU6CiAgICAgSFRNTEhSRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcAppbmRleCAwOTRmZjNjLi44YTQ1
ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuY3BwCkBAIC0zNywxMiAr
MzcsMTIgQEAgSFRNTEhlYWRFbGVtZW50OjpIVE1MSGVhZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW4KICAgICBBU1NFUlQoaGFzVGFnTmFtZSho
ZWFkVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEhlYWRFbGVtZW50PiBIVE1MSGVhZEVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTEhlYWRFbGVtZW50PiBI
VE1MSGVhZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIVE1MSGVhZEVsZW1lbnQoaGVhZFRhZywgZG9jdW1lbnQpKTsKIH0KIAot
UGFzc1JlZlB0cjxIVE1MSGVhZEVsZW1lbnQ+IEhUTUxIZWFkRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1M
SGVhZEVsZW1lbnQ+IEhUTUxIZWFkRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEhUTUxIZWFkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEhlYWRFbGVtZW50LmgKaW5kZXggYWFmZmUxMC4uMmFhODczOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxIZWFkRWxlbWVudC5oCkBAIC0zMCw4ICszMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSFRNTEhlYWRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSGVhZEVsZW1lbnQ+IGNyZWF0ZShE
b2N1bWVudCYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxIZWFkRWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRN
TEhlYWRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxI
ZWFkRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiBw
cml2YXRlOgogICAgIEhUTUxIZWFkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcAppbmRleCA0
N2VjNjYzLi5kZWRjZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFk
aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1l
bnQuY3BwCkBAIC0zMCw3ICszMCw3IEBAIGlubGluZSBIVE1MSGVhZGluZ0VsZW1lbnQ6OkhUTUxI
ZWFkaW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1CiB7CiB9CiAK
LVBhc3NSZWZQdHI8SFRNTEhlYWRpbmdFbGVtZW50PiBIVE1MSGVhZGluZ0VsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQ
dHI8SFRNTEhlYWRpbmdFbGVtZW50PiBIVE1MSGVhZGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIVE1MSGVhZGluZ0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5oCmluZGV4IGY3NWZmZTcuLmM5
YzkxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuaApAQCAtMjks
NyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxIZWFkaW5nRWxlbWVu
dCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SFRNTEhlYWRpbmdFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MSGVhZGluZ0VsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBIVE1MSGVh
ZGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxIdG1sRWxlbWVudC5jcHAKaW5kZXggOWU0MWQzMS4uNzgzZTliMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIEhU
TUxIdG1sRWxlbWVudDo6SFRNTEh0bWxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaHRtbFRhZykpOwog
fQogCi1QYXNzUmVmUHRyPEhUTUxIdG1sRWxlbWVudD4gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxIdG1sRWxlbWVudD4gSFRNTEh0bWxFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTEh0bWxFbGVtZW50KGh0bWxUYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8
SFRNTEh0bWxFbGVtZW50PiBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTEh0bWxFbGVtZW50
PiBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSHRtbEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEh0bWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxl
bWVudC5oCmluZGV4IDBmODNiOWEuLjU0OWUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEh0bWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRt
bEVsZW1lbnQuaApAQCAtMzAsOCArMzAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEhUTUxIdG1sRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEh0bWxFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSHRtbEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxIdG1sRWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MSHRtbEVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgaW5z
ZXJ0ZWRCeVBhcnNlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQu
Y3BwCmluZGV4IDM1YTU2ZjMuLmFmYTc1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGlubGluZSBIVE1MSUZyYW1lRWxlbWVu
dDo6SFRNTElGcmFtZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaWZyYW1lVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRN
TElGcmFtZUVsZW1lbnQ+IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxJRnJhbWVFbGVt
ZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxJ
RnJhbWVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJRnJhbWVFbGVtZW50LmgKaW5kZXggZjBlYmNlYy4uOWFhYWMxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEhUTUxJRnJhbWVFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxGcmFt
ZUVsZW1lbnRCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSUZyYW1l
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0
YXRpYyBSZWZQdHI8SFRNTElGcmFtZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBIVE1MSUZyYW1lRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCmluZGV4IDk5OTlmNmIuLjJkOWJiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtNjUsMTIgKzY1LDEyIEBAIEhUTUxJbWFnZUVsZW1lbnQ6
OkhUTUxJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtCiAgICAgICAgIGZvcm0tPnJlZ2lzdGVySW1nRWxlbWVudCh0aGlzKTsKIH0KIAotUGFz
c1JlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MSW1hZ2VFbGVtZW50KGltZ1RhZywgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1M
SW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCitS
ZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50
KiBmb3JtKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEltYWdlRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQpAQCAtODEsNyArODEsNyBAQCBIVE1MSW1hZ2VFbGVt
ZW50Ojp+SFRNTEltYWdlRWxlbWVudCgpCiAgICAgICAgIG1fZm9ybS0+cmVtb3ZlSW1nRWxlbWVu
dCh0aGlzKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VFbGVt
ZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgaW50
KiBvcHRpb25hbFdpZHRoLCBjb25zdCBpbnQqIG9wdGlvbmFsSGVpZ2h0KQorUmVmUHRyPEhUTUxJ
bWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBpbnQqIG9wdGlvbmFsV2lkdGgsIGNvbnN0IGludCogb3B0
aW9uYWxIZWlnaHQpCiB7CiAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gYWRv
cHRSZWYobmV3IEhUTUxJbWFnZUVsZW1lbnQoaW1nVGFnLCBkb2N1bWVudCkpOwogICAgIGlmIChv
cHRpb25hbFdpZHRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA5
OWZlMjViLi5mZDVlMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApA
QCAtMzcsOSArMzcsOSBAQCBzdHJ1Y3QgSW1hZ2VDYW5kaWRhdGU7CiBjbGFzcyBIVE1MSW1hZ2VF
bGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgRm9ybU5hbWVkSXRlbSB7CiAgICAg
ZnJpZW5kIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTElt
YWdlRWxlbWVudD4gY3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCYsIGNvbnN0IGludCog
b3B0aW9uYWxXaWR0aCwgY29uc3QgaW50KiBvcHRpb25hbEhlaWdodCk7CisgICAgc3RhdGljIFJl
ZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxJbWFnZUVsZW1l
bnQ+IGNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQmLCBjb25zdCBpbnQqIG9wdGlvbmFs
V2lkdGgsIGNvbnN0IGludCogb3B0aW9uYWxIZWlnaHQpOwogCiAgICAgdmlydHVhbCB+SFRNTElt
YWdlRWxlbWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCA1M2Q4Njc5Li45NzJhYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKQEAgLTEyOSwxMyArMTI5LDEzIEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAg
ICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CiB9CiAKLVBhc3NSZWZQdHI8
SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3Jt
LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKK1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5w
dXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQog
ewogICAgIGJvb2wgc2hvdWxkQ3JlYXRlU2hhZG93Um9vdExhemlseSA9IGNyZWF0ZWRCeVBhcnNl
cjsKICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXRFbGVtZW50ID0gYWRvcHRSZWYo
bmV3IEhUTUxJbnB1dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBh
cnNlcikpOwogICAgIGlmICghc2hvdWxkQ3JlYXRlU2hhZG93Um9vdExhemlseSkKICAgICAgICAg
aW5wdXRFbGVtZW50LT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgcmV0dXJuIGlu
cHV0RWxlbWVudC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGlucHV0RWxlbWVudDsKIH0KIAogSFRN
TEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJbWFnZUxvYWRlcigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGVjMGYzNjUuLjNmZTU3N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHN0
cnVjdCBJbnB1dEVsZW1lbnRDbGlja1N0YXRlIHsKIAogY2xhc3MgSFRNTElucHV0RWxlbWVudCA6
IHB1YmxpYyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7
CiAgICAgdmlydHVhbCB+SFRNTElucHV0RWxlbWVudCgpOwogCiAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUih3ZWJraXRzcGVlY2hjaGFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxLZXlnZW5FbGVtZW50LmNwcAppbmRleCAxZjVkNjdmLi44NmY5YTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcApAQCAtNDQsNyArNDQsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBjbGFzcyBLZXlnZW5TZWxlY3RFbGVtZW50IGZpbmFs
IDogcHVibGljIEhUTUxTZWxlY3RFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxLZXlnZW5TZWxlY3RFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorICAg
IHN0YXRpYyBSZWZQdHI8S2V5Z2VuU2VsZWN0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgS2V5Z2VuU2VsZWN0RWxl
bWVudChkb2N1bWVudCkpOwogICAgIH0KQEAgLTU4LDcgKzU4LDcgQEAgcHJvdGVjdGVkOgogICAg
IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVt
ZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIG92ZXJyaWRlCisgICAgdmlydHVhbCBS
ZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCkpOwogICAg
IH0KQEAgLTgzLDcgKzgzLDcgQEAgaW5saW5lIEhUTUxLZXlnZW5FbGVtZW50OjpIVE1MS2V5Z2Vu
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWUKICAgICBlbnN1cmVV
c2VyQWdlbnRTaGFkb3dSb290KCkuYXBwZW5kQ2hpbGQoc2VsZWN0LCBJR05PUkVfRVhDRVBUSU9O
KTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MS2V5Z2VuRWxlbWVudD4gSFRNTEtleWdlbkVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQs
IEhUTUxGb3JtRWxlbWVudCogZm9ybSkKK1JlZlB0cjxIVE1MS2V5Z2VuRWxlbWVudD4gSFRNTEtl
eWdlbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxLZXlnZW5FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmgKaW5kZXggMWQyMDhmOC4uZjgwNWJj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuaApAQCAtMzIsNyArMzIs
NyBAQCBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKIAogY2xhc3MgSFRNTEtleWdlbkVsZW1lbnQg
ZmluYWwgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEtleWdlbkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEhUTUxLZXlnZW5FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEtleWdlbkVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAppbmRleCA4MjdiMzYxLi40ODYzMTA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKQEAgLTQxLDEyICs0MSwxMiBA
QCBIVE1MTElFbGVtZW50OjpIVE1MTElFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxs
YmFja3MoKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MTElFbGVtZW50PiBIVE1MTElFbGVtZW50Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxMSUVsZW1lbnQ+IEhUTUxMSUVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MTElFbGVtZW50KGxpVGFnLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhU
TUxMSUVsZW1lbnQ+IEhUTUxMSUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTExJRWxlbWVudD4gSFRNTExJ
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxMSUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJ
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmgKaW5kZXggZTc2
MTMwMC4uM2MyZWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmgKQEAgLTI5LDgg
KzI5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MTElFbGVtZW50IGZpbmFs
IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
VE1MTElFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
VE1MTElFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7Cisg
ICAgc3RhdGljIFJlZlB0cjxIVE1MTElFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEhUTUxMSUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBIVE1MTElFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGFiZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5j
cHAKaW5kZXggMmUxOTg4OS4uNmVjZjA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGFiZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJl
bEVsZW1lbnQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIGlubGluZSBIVE1MTGFiZWxFbGVtZW50OjpI
VE1MTGFiZWxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUobGFiZWxUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MTGFi
ZWxFbGVtZW50PiBIVE1MTGFiZWxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxMYWJlbEVsZW1lbnQ+IEhU
TUxMYWJlbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTGFiZWxFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMYWJlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxl
bWVudC5oCmluZGV4IGNhOGVlNjAuLjQ3MzU3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExhYmVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExh
YmVsRWxlbWVudC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSFRNTExhYmVsRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTExhYmVsRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTExhYmVsRWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgTGFi
ZWxhYmxlRWxlbWVudCogY29udHJvbCgpOwogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAppbmRleCBhMTk3
YzIxLi5lYWY5YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNw
cApAQCAtNDAsNyArNDAsNyBAQCBpbmxpbmUgSFRNTExlZ2VuZEVsZW1lbnQ6OkhUTUxMZWdlbmRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZQogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGxlZ2VuZFRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxMZWdlbmRFbGVtZW50
PiBIVE1MTGVnZW5kRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MTGVnZW5kRWxlbWVudD4gSFRNTExlZ2Vu
ZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTGVnZW5kRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGVnZW5kRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVu
dC5oCmluZGV4IDkxMDRhYmQuLmZhMzg4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExlZ2VuZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdl
bmRFbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDsKIAogY2xhc3MgSFRNTExlZ2VuZEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxMZWdlbmRFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxI
VE1MTGVnZW5kRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwogCiBwcml2YXRlOgogICAgIEhUTUxMZWdlbmRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4
IDY5NjQxZjEuLjVhODdhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKQEAgLTgxLDcgKzgxLDcgQEAgaW5saW5lIEhUTUxMaW5rRWxlbWVudDo6SFRNTExpbmtFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JgogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGxpbmtUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IEhU
TUxMaW5rRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCitSZWZQdHI8SFRNTExpbmtFbGVt
ZW50PiBIVE1MTGlua0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSFRNTExpbmtFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVk
QnlQYXJzZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmluZGV4IDMy
MTNlYmYuLjk2MWNjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAt
NDUsNyArNDUsNyBAQCB0eXBlZGVmIEV2ZW50U2VuZGVyPEhUTUxMaW5rRWxlbWVudD4gTGlua0V2
ZW50U2VuZGVyOwogCiBjbGFzcyBIVE1MTGlua0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQsIHB1YmxpYyBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LCBwdWJsaWMgTGlua0xvYWRlckNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTExpbmtFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTExpbmtFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZpcnR1
YWwgfkhUTUxMaW5rRWxlbWVudCgpOwogCiAgICAgVVJMIGhyZWYoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKaW5kZXggOTdjNWZlMi4uZjA5ZTE5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKQEAgLTQxLDEyICs0MSwxMiBAQCBIVE1M
TWFwRWxlbWVudDo6SFRNTE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIEFTU0VSVChoYXNUYWdOYW1lKG1hcFRhZykpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxNYXBFbGVtZW50PiBIVE1MTWFwRWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MTWFwRWxlbWVudD4gSFRNTE1hcEVsZW1lbnQ6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1M
TWFwRWxlbWVudChtYXBUYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTE1hcEVs
ZW1lbnQ+IEhUTUxNYXBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxNYXBFbGVtZW50PiBIVE1MTWFwRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxNYXBFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KSk7CiB9CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBIVE1MTWFwRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW4KICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1Q
YXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MTWFwRWxlbWVudDo6YXJlYXMoKQorUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPiBIVE1MTWFwRWxlbWVudDo6YXJlYXMoKQogewogICAgIHJldHVybiBl
bnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihNYXBBcmVhcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNYXBFbGVtZW50LmgKaW5kZXggNjE3YWExMy4uMmJhM2I5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1hcEVsZW1lbnQuaApAQCAtMzIsOCArMzIsOCBAQCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50
OwogICAgIAogY2xhc3MgSFRNTE1hcEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxNYXBFbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTWFwRWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRN
TE1hcEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTE1h
cEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2
aXJ0dWFsIH5IVE1MTWFwRWxlbWVudCgpOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIG1hcE1vdXNlRXZlbnQoTGF5b3V0UG9pbnQgbG9jYXRpb24sIGNvbnN0IExheW91
dFNpemUmLCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgCiAgICAgSFRNTEltYWdlRWxlbWVudCogaW1h
Z2VFbGVtZW50KCk7Ci0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gYXJlYXMoKTsKKyAg
ICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGFyZWFzKCk7CiAKIHByaXZhdGU6CiAgICAgSFRNTE1h
cEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKaW5kZXggNjAyYTZmYi4uMTFiODY5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcApAQCAtNDIsNyArNDIs
NyBAQCBpbmxpbmUgSFRNTE1hcnF1ZWVFbGVtZW50OjpIVE1MTWFycXVlZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdQogICAgIEFTU0VSVChoYXNUYWdOYW1lKG1hcnF1
ZWVUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+IEhUTUxNYXJxdWVl
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKK1JlZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+IEhUTUxNYXJxdWVlRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkK
IHsKICAgICBSZWZQdHI8SFRNTE1hcnF1ZWVFbGVtZW50PiBtYXJxdWVlRWxlbWVudChhZG9wdFJl
ZihuZXcgSFRNTE1hcnF1ZWVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSkpOwogICAgIG1hcnF1
ZWVFbGVtZW50LT5zdXNwZW5kSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJx
dWVlRWxlbWVudC5oCmluZGV4IDQ3ZjgzMWMuLjU1ODQ1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWFycXVlZUVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBSZW5kZXJNYXJx
dWVlOwogCiBjbGFzcyBIVE1MTWFycXVlZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1l
bnQsIHByaXZhdGUgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxNYXJxdWVlRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgaW50IG1pbmltdW1EZWxheSgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKaW5kZXggNzRm
MGJiNy4uM2JkZWMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmNwcApA
QCAtMzUsNyArMzUsNyBAQCBpbmxpbmUgSFRNTE1lbnVFbGVtZW50OjpIVE1MTWVudUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmCiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUobWVudVRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gSFRNTE1l
bnVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50KQorUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gSFRNTE1lbnVFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1lbnVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuaAppbmRleCAyYzdmMDhmZS4u
M2M1YjVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5oCkBAIC0yOSw3ICsy
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTE1lbnVFbGVtZW50IGZpbmFs
IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
VE1MTWVudUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIAogcHJpdmF0ZToKICAgICBIVE1MTWVudUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZXRhRWxlbWVudC5jcHAKaW5kZXggYWIxMDk2Ny4uYTQ1MGU4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmNwcApAQCAtMzcsNyArMzcsNyBAQCBpbmxpbmUgSFRNTE1ldGFF
bGVtZW50OjpIVE1MTWV0YUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobWV0YVRhZykpOwogfQogCi1QYXNzUmVmUHRy
PEhUTUxNZXRhRWxlbWVudD4gSFRNTE1ldGFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxNZXRhRWxlbWVu
dD4gSFRNTE1ldGFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1ldGFF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZXRhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVs
ZW1lbnQuaAppbmRleCA4YmU2ZGRhLi5jOTEzOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZXRhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
dGFFbGVtZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBIVE1MTWV0YUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxNZXRhRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTE1ldGFFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGNvbnRlbnQoKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGh0
dHBFcXVpdigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAK
aW5kZXggOTQ1MjEwZS4uMTRkYjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWV0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVs
ZW1lbnQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIEhUTUxNZXRlckVsZW1lbnQ6On5IVE1MTWV0ZXJF
bGVtZW50KCkKIHsKIH0KIAotUGFzc1JlZlB0cjxIVE1MTWV0ZXJFbGVtZW50PiBIVE1MTWV0ZXJF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQorUmVmUHRyPEhUTUxNZXRlckVsZW1lbnQ+IEhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgUmVmUHRyPEhUTUxNZXRlckVsZW1lbnQ+IG1ldGVyID0gYWRvcHRSZWYobmV3IEhUTUxNZXRl
ckVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKICAgICBtZXRlci0+ZW5zdXJlVXNlckFnZW50
U2hhZG93Um9vdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAppbmRleCBh
OWJjOTQ2Li41MDZlMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRl
ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaApA
QCAtMzEsNyArMzEsNyBAQCBjbGFzcyBSZW5kZXJNZXRlcjsKIAogY2xhc3MgSFRNTE1ldGVyRWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBMYWJlbGFibGVFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxIVE1MTWV0ZXJFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MTWV0ZXJFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBlbnVtIEdhdWdlUmVn
aW9uIHsKICAgICAgICAgR2F1Z2VSZWdpb25PcHRpbXVtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
b2RFbGVtZW50LmNwcAppbmRleCAyYTdlNDcyLi4zODcwNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNb2RFbGVtZW50LmNwcApAQCAtMzQsNyArMzQsNyBAQCBpbmxpbmUgSFRNTE1vZEVsZW1l
bnQ6OkhUTUxNb2RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkbwogewogfQogCi1QYXNzUmVmUHRyPEhUTUxNb2RFbGVtZW50PiBIVE1MTW9kRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkK
K1JlZlB0cjxIVE1MTW9kRWxlbWVudD4gSFRNTE1vZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIVE1MTW9kRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTW9kRWxlbWVudC5oCmluZGV4IDFmYjg2NWIuLmUzYzA5YmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBIVE1MTW9kRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE1vZEVsZW1lbnQ+IGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhU
TUxNb2RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
IHByaXZhdGU6CiAgICAgSFRNTE1vZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAppbmRleCA2ZjBj
ZTk4Li44ZTY1NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAK
QEAgLTQ0LDEyICs0NCwxMiBAQCBIVE1MT0xpc3RFbGVtZW50OjpIVE1MT0xpc3RFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgIEFTU0VSVCho
YXNUYWdOYW1lKG9sVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTE9MaXN0RWxlbWVudD4gSFRN
TE9MaXN0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MT0xp
c3RFbGVtZW50PiBIVE1MT0xpc3RFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE9MaXN0RWxlbWVudChvbFRhZywgZG9jdW1l
bnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MT0xpc3RFbGVtZW50PiBIVE1MT0xpc3RFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQorUmVmUHRyPEhUTUxPTGlzdEVsZW1lbnQ+IEhUTUxPTGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MT0xpc3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCmluZGV4IDFmMGFhZjEuLjUzYzVh
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCkBAIC0yOSw4ICsyOSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTE9MaXN0RWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TE9MaXN0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTE9MaXN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OworICAgIHN0YXRpYyBSZWZQdHI8SFRNTE9MaXN0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7
CisgICAgc3RhdGljIFJlZlB0cjxIVE1MT0xpc3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBpbnQgc3RhcnQoKSBjb25zdCB7IHJldHVybiBt
X2hhc0V4cGxpY2l0U3RhcnQgPyBtX3N0YXJ0IDogKG1faXNSZXZlcnNlZCA/IGl0ZW1Db3VudCgp
IDogMSk7IH0KICAgICB2b2lkIHNldFN0YXJ0KGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDdkNTY1M2YuLjc4MTg3MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC03Niw3ICs3Niw3IEBAIGlubGluZSBI
VE1MT2JqZWN0RWxlbWVudDo6fkhUTUxPYmplY3RFbGVtZW50KCkKIHsKIH0KIAotUGFzc1JlZlB0
cjxIVE1MT2JqZWN0RWxlbWVudD4gSFRNTE9iamVjdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCog
Zm9ybSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCitSZWZQdHI8SFRNTE9iamVjdEVsZW1lbnQ+IEhU
TUxPYmplY3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJvb2wgY3JlYXRlZEJ5UGFy
c2VyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE9iamVjdEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBhcnNlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDAxN2U1ODAuLjc0MmIzNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgSFRN
TEZvcm1FbGVtZW50OwogCiBjbGFzcyBIVE1MT2JqZWN0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LCBwdWJsaWMgRm9ybUFzc29jaWF0ZWRFbGVtZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MT2JqZWN0RWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxPYmplY3RFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50KiwgYm9v
bCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZpcnR1YWwgfkhUTUxPYmplY3RFbGVtZW50KCk7CiAK
ICAgICBib29sIGlzRG9jTmFtZWRJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9kb2NOYW1lZEl0ZW07
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCmluZGV4IDFk
N2NiOGYuLmFhNGRiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVt
ZW50LmNwcApAQCAtNDMsNyArNDMsNyBAQCBpbmxpbmUgSFRNTE9wdEdyb3VwRWxlbWVudDo6SFRN
TE9wdEdyb3VwRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEbwogICAgIEFT
U0VSVChoYXNUYWdOYW1lKG9wdGdyb3VwVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTE9wdEdy
b3VwRWxlbWVudD4gSFRNTE9wdEdyb3VwRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MT3B0R3JvdXBFbGVt
ZW50PiBIVE1MT3B0R3JvdXBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TE9wdEdyb3VwRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAppbmRleCBjYjlkOWMwLi41ZTU1ZWRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBj
bGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKIAogY2xhc3MgSFRNTE9wdEdyb3VwRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTE9wdEdyb3VwRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTE9wdEdyb3VwRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdmlydHVhbCBib29sIGlzRGlzYWJs
ZWRGb3JtQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBv
d25lclNlbGVjdEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5jcHAKaW5kZXggZGVkMDEwMi4uY2M4MzA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTU3LDE3ICs1NywxNyBAQCBIVE1MT3B0aW9uRWxl
bWVudDo6SFRNTE9wdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvYwogICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gSFRNTE9wdGlv
bkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudChvcHRpb25UYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBh
c3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhU
TUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxPcHRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGVGb3JKU0Nv
bnN0cnVjdG9yKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBT
dHJpbmcmIHZhbHVlLAorUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVu
dDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwKICAgICAgICAgYm9vbCBkZWZhdWx0U2VsZWN0
ZWQsIGJvb2wgc2VsZWN0ZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxIVE1M
T3B0aW9uRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudChv
cHRpb25UYWcsIGRvY3VtZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmgKaW5kZXggOWE2YzIwYi4uMGY4MDcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuaApAQCAtMzQsOSArMzQsOSBAQCBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKIAog
Y2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhUTUxPcHRpb25FbGVtZW50PiBjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiwgY29u
c3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlLAorICAgIHN0YXRpYyBSZWZQdHI8
SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8
SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBjcmVhdGVGb3JKU0NvbnN0
cnVjdG9yKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVl
LAogICAgICAgIGJvb2wgZGVmYXVsdFNlbGVjdGVkLCBib29sIHNlbGVjdGVkLCBFeGNlcHRpb25D
b2RlJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGV4dCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRleCBjZTM4MWI2Li4wNzFlZjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcApAQCAtNDYsNyAr
NDYsNyBAQCBpbmxpbmUgSFRNTE91dHB1dEVsZW1lbnQ6OkhUTUxPdXRwdXRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZQogewogfQogCi1QYXNzUmVmUHRyPEhUTUxP
dXRwdXRFbGVtZW50PiBIVE1MT3V0cHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQor
UmVmUHRyPEhUTUxPdXRwdXRFbGVtZW50PiBIVE1MT3V0cHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVt
ZW50KiBmb3JtKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE91dHB1dEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1
dEVsZW1lbnQuaAppbmRleCA4M2E5YjY0Li45MTZlZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3V0cHV0RWxlbWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSFRNTE91dHB1dEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9s
RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE91dHB1dEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1l
bnQqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxPdXRwdXRFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKICAgICBTdHJp
bmcgdmFsdWUoKSBjb25zdDsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAppbmRleCBhMzJhM2M4
Li41ZDg1NjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50
LmNwcApAQCAtMzksMTIgKzM5LDEyIEBAIGlubGluZSBIVE1MUGFyYWdyYXBoRWxlbWVudDo6SFRN
TFBhcmFncmFwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShwVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFBhcmFncmFwaEVsZW1l
bnQ+IEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVm
UHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxQYXJhZ3Jh
cGhFbGVtZW50KHBUYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFBhcmFncmFw
aEVsZW1lbnQ+IEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVt
ZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxQYXJhZ3JhcGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKaW5kZXggMTRkNzM4MS4uMTkwOTk3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaApAQCAtMjksOCArMjks
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxQYXJhZ3JhcGhFbGVtZW50IGZp
bmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBj
cmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAg
ICAgSFRNTFBhcmFncmFwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAppbmRleCBkMTBmNDYyLi4x
NWMwOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKQEAgLTM3
LDcgKzM3LDcgQEAgaW5saW5lIEhUTUxQYXJhbUVsZW1lbnQ6OkhUTUxQYXJhbUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShwYXJhbVRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxQYXJhbUVsZW1lbnQ+IEhUTUxQYXJh
bUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCitSZWZQdHI8SFRNTFBhcmFtRWxlbWVudD4gSFRNTFBhcmFtRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxQYXJhbUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmgKaW5kZXggZWQ5YjRl
Yi4uYmU4NzkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmgKQEAgLTI5
LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MUGFyYW1FbGVtZW50
IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MUGFyYW1FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MUGFyYW1FbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0Owog
ICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50
LmNwcAppbmRleCBmOTk0YWUxLi4zNDI0ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQcmVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVF
bGVtZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBpbmxpbmUgSFRNTFByZUVsZW1lbnQ6OkhUTUxQ
cmVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkbwogewog
fQogCi1QYXNzUmVmUHRyPEhUTUxQcmVFbGVtZW50PiBIVE1MUHJlRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxI
VE1MUHJlRWxlbWVudD4gSFRNTFByZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MUHJlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUHJlRWxlbWVudC5oCmluZGV4IDY4ODYwMWUuLmNhZDliZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQcmVFbGVtZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBIVE1MUHJlRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFByZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxQcmVFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6
CiAgICAgSFRNTFByZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRleCBlN2NhNjRm
Li44Y2YyZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5j
cHAKQEAgLTUwLDExICs1MCwxMSBAQCBIVE1MUHJvZ3Jlc3NFbGVtZW50Ojp+SFRNTFByb2dyZXNz
RWxlbWVudCgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFByb2dyZXNzRWxlbWVudD4gSFRNTFBy
b2dyZXNzRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MUHJvZ3Jlc3NFbGVtZW50PiBIVE1MUHJvZ3Jlc3NF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIFJlZlB0cjxIVE1MUHJvZ3Jlc3NFbGVtZW50PiBwcm9ncmVzcyA9IGFk
b3B0UmVmKG5ldyBIVE1MUHJvZ3Jlc3NFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiAgICAg
cHJvZ3Jlc3MtPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICByZXR1cm4gcHJvZ3Jl
c3MucmVsZWFzZSgpOworICAgIHJldHVybiBwcm9ncmVzczsKIH0KIAogUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb2dyZXNzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NF
bGVtZW50LmgKaW5kZXggYzdmZDk1NS4uMzYyZmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUHJvZ3Jlc3NFbGVtZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBkb3VibGUgSW5kZXRlcm1pbmF0ZVBvc2l0aW9uOwogICAgIHN0YXRpYyBjb25zdCBk
b3VibGUgSW52YWxpZFBvc2l0aW9uOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFByb2dy
ZXNzRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAg
IHN0YXRpYyBSZWZQdHI8SFRNTFByb2dyZXNzRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgZG91YmxlIHZhbHVlKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRWYWx1ZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNTVmMWVmMy4uYTY3ZWIxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5l
IEhUTUxTY3JpcHRFbGVtZW50OjpIVE1MU2NyaXB0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWUKICAgICBBU1NFUlQoaGFzVGFnTmFtZShzY3JpcHRUYWcpKTsKIH0K
IAotUGFzc1JlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4gSFRNTFNjcmlwdEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wg
d2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCkKK1JlZlB0cjxIVE1MU2Ny
aXB0RWxlbWVudD4gSFRNTFNjcmlwdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwg
Ym9vbCBhbHJlYWR5U3RhcnRlZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxTY3Jp
cHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBhbHJlYWR5
U3RhcnRlZCkpOwogfQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6
OmRpc3BhdGNoTG9hZEV2ZW50KCkKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKLVBhc3NSZWZQdHI8RWxl
bWVudD4gSFRNTFNjcmlwdEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5k
Q2hpbGRyZW4oKQorUmVmUHRyPEVsZW1lbnQ+IEhUTUxTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1l
bnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxTY3JpcHRFbGVtZW50KHRhZ1FOYW1lKCksIGRvY3VtZW50KCksIGZhbHNlLCBhbHJl
YWR5U3RhcnRlZCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
Y3JpcHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgK
aW5kZXggNjhkOTZhMy4uZTBlZTdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVs
ZW1lbnQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhU
TUxTY3JpcHRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgU2NyaXB0
RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFNjcmlwdEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIHdhc0luc2Vy
dGVkQnlQYXJzZXIsIGJvb2wgYWxyZWFkeVN0YXJ0ZWQgPSBmYWxzZSk7CisgICAgc3RhdGljIFJl
ZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYsIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCA9IGZh
bHNlKTsKIAogICAgIFN0cmluZyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gc2NyaXB0Q29udGVudCgp
OyB9CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwpAQCAtNjQsNyArNjQsNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0
dHJpYnV0ZXNBbmRDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1l
bnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBvdmVycmlkZTsK
IH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
aAppbmRleCBkYzAwZGFhLi40YTNiYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEhUTUxPcHRpb25zQ29sbGVjdGlvbjsK
IAogY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZSwgcHVibGljIFR5cGVBaGVhZERhdGFTb3VyY2UgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxTZWxlY3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CisgICAgc3RhdGljIFJlZlB0cjxI
VE1MU2VsZWN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYs
IEhUTUxGb3JtRWxlbWVudCopOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHNlbGVjdGVkSW5k
ZXgoKSBjb25zdDsKICAgICB2b2lkIHNldFNlbGVjdGVkSW5kZXgoaW50KTsKQEAgLTY2LDggKzY2
LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB2YWx1ZSgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxP
cHRpb25zQ29sbGVjdGlvbj4gb3B0aW9ucygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IHNlbGVjdGVkT3B0aW9ucygpOworICAgIFJlZlB0cjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+
IG9wdGlvbnMoKTsKKyAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHNlbGVjdGVkT3B0aW9ucygp
OwogCiAgICAgdm9pZCBvcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKaW5kZXggZjBiN2U0YS4uMzBmZGY5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgaW5saW5lIEhUTUxTb3VyY2VFbGVtZW50OjpIVE1MU291cmNlRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWUKICAgICBBU1NFUlQoaGFzVGFnTmFtZShzb3Vy
Y2VUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MU291cmNlRWxlbWVudD4gSFRNTFNvdXJjZUVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCitSZWZQdHI8SFRNTFNvdXJjZUVsZW1lbnQ+IEhUTUxTb3VyY2VFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFNvdXJjZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaAppbmRleCA0Y2E1
MjhkLi5jZjFiNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCkBA
IC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFNvdXJjZUVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxTb3VyY2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MU291cmNlRWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgU3RyaW5nIG1lZGlhKCkg
Y29uc3Q7CiAgICAgU3RyaW5nIHR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNwYW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNw
YW5FbGVtZW50LmNwcAppbmRleCA5ZWNjMjMxLi40NDZiMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTcGFuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3BhbkVsZW1lbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIEhUTUxTcGFuRWxlbWVudDo6
SFRNTFNwYW5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc3BhblRhZykpOwogfQogCi1QYXNzUmVmUHRy
PEhUTUxTcGFuRWxlbWVudD4gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxTcGFuRWxlbWVu
dD4gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFNwYW5F
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTcGFuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3BhbkVs
ZW1lbnQuaAppbmRleCA1NzMzMjMzLi40OTdiZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTcGFuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNw
YW5FbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBIVE1MU3BhbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxTcGFuRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFNwYW5FbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAg
ICAgSFRNTFNwYW5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggNjgwNjQ5NDkuLjhlNjkz
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcApAQCAtNjMsNyAr
NjMsNyBAQCBIVE1MU3R5bGVFbGVtZW50Ojp+SFRNTFN0eWxlRWxlbWVudCgpCiAgICAgc3R5bGVM
b2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCgqdGhpcyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRN
TFN0eWxlRWxlbWVudD4gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCitS
ZWZQdHI8SFRNTFN0eWxlRWxlbWVudD4gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQ
YXJzZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU3R5bGVFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U3R5bGVFbGVtZW50LmgKaW5kZXggNGI1NTJlMC4uZTkxZmJhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3R5bGVFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgdHlwZWRlZiBFdmVudFNlbmRl
cjxIVE1MU3R5bGVFbGVtZW50PiBTdHlsZUV2ZW50U2VuZGVyOwogCiBjbGFzcyBIVE1MU3R5bGVF
bGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIVE1MU3R5bGVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHN0YXRpYyBSZWZQdHI8SFRN
TFN0eWxlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJv
b2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MU3R5bGVFbGVtZW50KCk7CiAK
ICAgICBDU1NTdHlsZVNoZWV0KiBzaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVTaGVldE93
bmVyLnNoZWV0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1h
cnlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNw
cAppbmRleCBmYjM5NzNhLi5iMDgxMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3Vt
bWFyeUVsZW1lbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKIGNsYXNzIFN1bW1hcnlDb250ZW50RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBJbnNlcnRp
b25Qb2ludCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3VtbWFyeUNvbnRlbnRF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFN1bW1hcnlDb250
ZW50RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgU3VtbWFyeUNv
bnRlbnRFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQ3LDE2ICs0NywxNiBAQCBwcml2
YXRlOgogICAgIH0KIH07CiAKLVBhc3NSZWZQdHI8U3VtbWFyeUNvbnRlbnRFbGVtZW50PiBTdW1t
YXJ5Q29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8U3Vt
bWFyeUNvbnRlbnRFbGVtZW50PiBTdW1tYXJ5Q29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdW1tYXJ5Q29udGVudEVs
ZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MU3VtbWFyeUVsZW1lbnQ+IEhU
TUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MU3VtbWFyeUVsZW1lbnQ+IEhUTUxTdW1tYXJ5
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICBSZWZQdHI8SFRNTFN1bW1hcnlFbGVtZW50PiBzdW1tYXJ5ID0gYWRv
cHRSZWYobmV3IEhUTUxTdW1tYXJ5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogICAgIHN1
bW1hcnktPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICByZXR1cm4gc3VtbWFyeS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIHN1bW1hcnk7CiB9CiAKIEhUTUxTdW1tYXJ5RWxlbWVudDo6
SFRNTFN1bW1hcnlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCmluZGV4
IDBkYjhhYmUuLjBkNTZlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1
bW1hcnlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1l
bnQuaApAQCAtMjksNyArMjksNyBAQCBjbGFzcyBIVE1MRGV0YWlsc0VsZW1lbnQ7CiAKIGNsYXNz
IEhUTUxTdW1tYXJ5RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFN1bW1hcnlFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MU3VtbWFy
eUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICBi
b29sIGlzTWFpblN1bW1hcnkoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRU
b01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcAppbmRleCAwZGRmNDE3Li5mMmU5ZmY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcApAQCAt
MzksNyArMzksNyBAQCBpbmxpbmUgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OkhUTUxUYWJsZUNh
cHRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZwogICAgIEFTU0VSVChoYXNUYWdO
YW1lKGNhcHRpb25UYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVu
dD4gSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQ+IEhUTUxUYWJsZUNhcHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaAppbmRleCA5MDRjMzI3Li45
ZGM1ZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVu
dC5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFRh
YmxlQ2FwdGlvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MVGFi
bGVDYXB0aW9uRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwogCiBwcml2YXRlOgogICAgIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxF
bGVtZW50LmNwcAppbmRleCAwMGY0N2NkLi43ZGE3ODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcApAQCAtNDQsNyArNDQsNyBAQCBpbmxpbmUgSFRN
TFRhYmxlQ2VsbEVsZW1lbnQ6OkhUTUxUYWJsZUNlbGxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsCiB7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+IEhU
TUxUYWJsZUNlbGxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxUYWJsZUNlbGxFbGVtZW50PiBIVE1MVGFi
bGVDZWxsRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZUNlbGxF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNlbGxFbGVtZW50LmgKaW5kZXggM2NkYjlhYi4uOTEyMDk3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxUYWJsZUNlbGxFbGVtZW50IGZpbmFsIDogcHVibGlj
IEhUTUxUYWJsZVBhcnRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
VE1MVGFibGVDZWxsRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIGludCBjZWxsSW5kZXgoKSBjb25z
dDsKICAgICBpbnQgY29sU3BhbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlQ29sRWxlbWVudC5jcHAKaW5kZXggOWZhYzdhOC4uNWE2ZWE3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIGlubGlu
ZSBIVE1MVGFibGVDb2xFbGVtZW50OjpIVE1MVGFibGVDb2xFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvCiB7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFRhYmxlQ29sRWxlbWVu
dD4gSFRNTFRhYmxlQ29sRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MVGFibGVDb2xFbGVtZW50PiBIVE1M
VGFibGVDb2xFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRhYmxlQ29s
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNvbEVsZW1lbnQuaAppbmRleCAyYzk2MDg1Li4zMDNlZDQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxUYWJsZUNvbEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRN
TFRhYmxlUGFydEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxU
YWJsZUNvbEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFRhYmxlQ29sRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKICAgICBpbnQgc3Bhbigp
IGNvbnN0IHsgcmV0dXJuIG1fc3BhbjsgfQogICAgIHZvaWQgc2V0U3BhbihpbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggYTA1NzcxMy4uNDAyMjQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC01NywxMiArNTcs
MTIgQEAgSFRNTFRhYmxlRWxlbWVudDo6SFRNTFRhYmxlRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0YWJs
ZVRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4g
SFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZUVsZW1lbnQodGFibGVUYWcsIGRvY3VtZW50KSk7CiB9
CiAKLVBhc3NSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0
cjxIVE1MVGFibGVFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTFRhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpAQCAtMTI0
LDEzICsxMjQsMTMgQEAgdm9pZCBIVE1MVGFibGVFbGVtZW50OjpzZXRURm9vdChQYXNzUmVmUHRy
PEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiBuZXdGb290LCBFeGMKICAgICBpbnNlcnRCZWZvcmUo
bmV3Rm9vdCwgY2hpbGQsIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRh
YmxlRWxlbWVudDo6Y3JlYXRlVEhlYWQoKQorUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVF
bGVtZW50OjpjcmVhdGVUSGVhZCgpCiB7CiAgICAgaWYgKEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
KiBleGlzdGluZ0hlYWQgPSB0SGVhZCgpKQogICAgICAgICByZXR1cm4gZXhpc3RpbmdIZWFkOwog
ICAgIFJlZlB0cjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4gaGVhZCA9IEhUTUxUYWJsZVNlY3Rp
b25FbGVtZW50OjpjcmVhdGUodGhlYWRUYWcsIGRvY3VtZW50KCkpOwogICAgIHNldFRIZWFkKGhl
YWQsIElHTk9SRV9FWENFUFRJT04pOwotICAgIHJldHVybiBoZWFkLnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gaGVhZDsKIH0KIAogdm9pZCBIVE1MVGFibGVFbGVtZW50OjpkZWxldGVUSGVhZCgpCkBA
IC0xMzgsMTMgKzEzOCwxMyBAQCB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmRlbGV0ZVRIZWFkKCkK
ICAgICByZW1vdmVDaGlsZCh0SGVhZCgpLCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KIAotUGFzc1Jl
ZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlVEZvb3QoKQorUmVmUHRy
PEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVURm9vdCgpCiB7CiAgICAgaWYg
KEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiBleGlzdGluZ0Zvb3QgPSB0Rm9vdCgpKQogICAgICAg
ICByZXR1cm4gZXhpc3RpbmdGb290OwogICAgIFJlZlB0cjxIVE1MVGFibGVTZWN0aW9uRWxlbWVu
dD4gZm9vdCA9IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpjcmVhdGUodGZvb3RUYWcsIGRvY3Vt
ZW50KCkpOwogICAgIHNldFRGb290KGZvb3QsIElHTk9SRV9FWENFUFRJT04pOwotICAgIHJldHVy
biBmb290LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZm9vdDsKIH0KIAogdm9pZCBIVE1MVGFibGVF
bGVtZW50OjpkZWxldGVURm9vdCgpCkBAIC0xNTIsMjEgKzE1MiwyMSBAQCB2b2lkIEhUTUxUYWJs
ZUVsZW1lbnQ6OmRlbGV0ZVRGb290KCkKICAgICByZW1vdmVDaGlsZCh0Rm9vdCgpLCBJR05PUkVf
RVhDRVBUSU9OKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVu
dDo6Y3JlYXRlVEJvZHkoKQorUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50Ojpj
cmVhdGVUQm9keSgpCiB7CiAgICAgUmVmUHRyPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiBib2R5
ID0gSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OmNyZWF0ZSh0Ym9keVRhZywgZG9jdW1lbnQoKSk7
CiAgICAgTm9kZSogcmVmZXJlbmNlRWxlbWVudCA9IGxhc3RCb2R5KCkgPyBsYXN0Qm9keSgpLT5u
ZXh0U2libGluZygpIDogMDsKICAgICBpbnNlcnRCZWZvcmUoYm9keSwgcmVmZXJlbmNlRWxlbWVu
dCwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgcmV0dXJuIGJvZHkucmVsZWFzZSgpOworICAg
IHJldHVybiBib2R5OwogfQogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVt
ZW50OjpjcmVhdGVDYXB0aW9uKCkKK1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVu
dDo6Y3JlYXRlQ2FwdGlvbigpCiB7CiAgICAgaWYgKEhUTUxUYWJsZUNhcHRpb25FbGVtZW50KiBl
eGlzdGluZ0NhcHRpb24gPSBjYXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBleGlzdGluZ0NhcHRp
b247CiAgICAgUmVmUHRyPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50PiBjYXB0aW9uID0gSFRNTFRh
YmxlQ2FwdGlvbkVsZW1lbnQ6OmNyZWF0ZShjYXB0aW9uVGFnLCBkb2N1bWVudCgpKTsKICAgICBz
ZXRDYXB0aW9uKGNhcHRpb24sIElHTk9SRV9FWENFUFRJT04pOwotICAgIHJldHVybiBjYXB0aW9u
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gY2FwdGlvbjsKIH0KIAogdm9pZCBIVE1MVGFibGVFbGVt
ZW50OjpkZWxldGVDYXB0aW9uKCkKQEAgLTE4Myw3ICsxODMsNyBAQCBIVE1MVGFibGVTZWN0aW9u
RWxlbWVudCogSFRNTFRhYmxlRWxlbWVudDo6bGFzdEJvZHkoKSBjb25zdAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50Ojpp
bnNlcnRSb3coaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxIVE1MRWxlbWVu
dD4gSFRNTFRhYmxlRWxlbWVudDo6aW5zZXJ0Um93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgaWYgKGluZGV4IDwgLTEpIHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VS
UjsKQEAgLTIyMCwxMyArMjIwLDEzIEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxUYWJs
ZUVsZW1lbnQ6Omluc2VydFJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgICAg
ICAgICBSZWZQdHI8SFRNTFRhYmxlUm93RWxlbWVudD4gbmV3Um93ID0gSFRNTFRhYmxlUm93RWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgICAgICAgICAgbmV3Qm9keS0+YXBwZW5kQ2hp
bGQobmV3Um93LCBlYyk7CiAgICAgICAgICAgICBhcHBlbmRDaGlsZChuZXdCb2R5LnJlbGVhc2Uo
KSwgZWMpOwotICAgICAgICAgICAgcmV0dXJuIG5ld1Jvdy5yZWxlYXNlKCk7CisgICAgICAgICAg
ICByZXR1cm4gbmV3Um93OwogICAgICAgICB9CiAgICAgfQogCiAgICAgUmVmUHRyPEhUTUxUYWJs
ZVJvd0VsZW1lbnQ+IG5ld1JvdyA9IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCgpKTsKICAgICBwYXJlbnQtPmluc2VydEJlZm9yZShuZXdSb3csIHJvdy5nZXQoKSwgZWMpOwot
ICAgIHJldHVybiBuZXdSb3cucmVsZWFzZSgpOworICAgIHJldHVybiBuZXdSb3c7CiB9CiAKIHZv
aWQgSFRNTFRhYmxlRWxlbWVudDo6ZGVsZXRlUm93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC00NjgsNyArNDY4LDcgQEAgSFRNTFRhYmxlRWxlbWVudDo6Q2VsbEJvcmRlcnMgSFRN
TFRhYmxlRWxlbWVudDo6Y2VsbEJvcmRlcnMoKSBjb25zdAogICAgIHJldHVybiBOb0JvcmRlcnM7
CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVh
dGVTaGFyZWRDZWxsU3R5bGUoKQorUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxl
bWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxlKCkKIHsKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxl
UHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKIApA
QCAtNTA1LDcgKzUwNSw3IEBAIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVF
bGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQogICAgIGlmIChtX3BhZGRpbmcpCiAgICAg
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVBhZGRpbmcsIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZVZhbHVlKG1fcGFkZGluZywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwogCi0g
ICAgcmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3R5bGU7CiB9CiAKIGNvbnN0
IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbENlbGxTdHlsZSgp
CkBAIC01NTAsMTIgKzU1MCwxMiBAQCBib29sIEhUTUxUYWJsZUVsZW1lbnQ6OmlzVVJMQXR0cmli
dXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1
dGUubmFtZSgpID09IGJhY2tncm91bmRBdHRyIHx8IEhUTUxFbGVtZW50Ojppc1VSTEF0dHJpYnV0
ZShhdHRyaWJ1dGUpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVF
bGVtZW50Ojpyb3dzKCkKK1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlRWxlbWVudDo6
cm93cygpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFRhYmxlUm93
cyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZUVsZW1lbnQ6OnRC
b2RpZXMoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50Ojp0Qm9kaWVz
KCkKIHsKICAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVGFibGVUQm9kaWVz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKaW5kZXggODczZGYyNS4u
YjdlMWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKQEAgLTM3LDgg
KzM3LDggQEAgY2xhc3MgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ7CiAKIGNsYXNzIEhUTUxUYWJs
ZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IGNy
ZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgSFRNTFRhYmxlQ2Fw
dGlvbkVsZW1lbnQqIGNhcHRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldENhcHRpb24oUGFzc1Jl
ZlB0cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTQ5LDE5
ICs0OSwxOSBAQCBwdWJsaWM6CiAgICAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIHRGb290KCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRURm9vdChQYXNzUmVmUHRyPEhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50PiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3Jl
YXRlVEhlYWQoKTsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVRIZWFkKCk7CiAgICAg
dm9pZCBkZWxldGVUSGVhZCgpOwotICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVRG
b290KCk7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVURm9vdCgpOwogICAgIHZvaWQg
ZGVsZXRlVEZvb3QoKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVUQm9keSgp
OwotICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUNhcHRpb24oKTsKKyAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVRCb2R5KCk7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBj
cmVhdGVDYXB0aW9uKCk7CiAgICAgdm9pZCBkZWxldGVDYXB0aW9uKCk7Ci0gICAgUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4gaW5zZXJ0Um93KEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBpbnNl
cnRSb3coLTEsIGVjKTsgfQotICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGluc2VydFJvdyhp
bnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGluc2Vy
dFJvdyhFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gaW5zZXJ0Um93KC0xLCBlYyk7IH0KKyAg
ICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGluc2VydFJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIGRlbGV0ZVJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAg
IFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHJvd3MoKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxD
b2xsZWN0aW9uPiB0Qm9kaWVzKCk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiByb3dzKCk7
CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB0Qm9kaWVzKCk7CiAKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHJ1bGVzKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdW1tYXJ5
KCkgY29uc3Q7CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAKICAgICBDZWxsQm9yZGVycyBj
ZWxsQm9yZGVycygpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNy
ZWF0ZVNoYXJlZENlbGxTdHlsZSgpOworICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0
ZVNoYXJlZENlbGxTdHlsZSgpOwogCiAgICAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RC
b2R5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Um93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQu
Y3BwCmluZGV4IDk3YmFhMjAuLjk5MzY3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVSb3dFbGVtZW50LmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIEhUTUxUYWJsZVJvd0VsZW1l
bnQ6OkhUTUxUYWJsZVJvd0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodHJUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxI
VE1MVGFibGVSb3dFbGVtZW50PiBIVE1MVGFibGVSb3dFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50KQorUmVmUHRyPEhUTUxUYWJsZVJvd0VsZW1lbnQ+IEhUTUxUYWJsZVJvd0VsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MVGFibGVSb3dFbGVtZW50KHRyVGFnLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRy
PEhUTUxUYWJsZVJvd0VsZW1lbnQ+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFRh
YmxlUm93RWxlbWVudD4gSFRNTFRhYmxlUm93RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxUYWJsZVJvd0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KQEAgLTEx
OCw3ICsxMTgsNyBAQCBpbnQgSFRNTFRhYmxlUm93RWxlbWVudDo6c2VjdGlvblJvd0luZGV4KCkg
Y29uc3QKICAgICByZXR1cm4gckluZGV4OwogfQogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBI
VE1MVGFibGVSb3dFbGVtZW50OjppbnNlcnRDZWxsKGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6Omluc2VydENlbGwo
aW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IGNoaWxkcmVuID0gY2VsbHMoKTsKICAgICBpbnQgbnVtQ2VsbHMgPSBjaGlsZHJlbiA/IGNo
aWxkcmVuLT5sZW5ndGgoKSA6IDA7CkBAIC0xMzgsNyArMTM4LDcgQEAgUGFzc1JlZlB0cjxIVE1M
RWxlbWVudD4gSFRNTFRhYmxlUm93RWxlbWVudDo6aW5zZXJ0Q2VsbChpbnQgaW5kZXgsIEV4Y2Vw
dGlvbkNvZGUKICAgICAgICAgICAgIG4gPSBjaGlsZHJlbi0+aXRlbShpbmRleCk7CiAgICAgICAg
IGluc2VydEJlZm9yZShjZWxsLCBuLCBlYyk7CiAgICAgfQotICAgIHJldHVybiBjZWxsLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gY2VsbDsKIH0KIAogdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50Ojpk
ZWxldGVDZWxsKGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xNTQsNyArMTU0LDcg
QEAgdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50OjpkZWxldGVDZWxsKGludCBpbmRleCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiB9CiAKLVBhc3NSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKCkKK1JlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlUm93RWxlbWVudDo6Y2VsbHMoKQogewogICAgIHJldHVy
biBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihUUkNlbGxzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmgKaW5kZXggYzRiMGY3Ny4uZDFlMmM0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmgKQEAgLTMyLDggKzMyLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MVGFibGVSb3dFbGVtZW50IGZpbmFsIDog
cHVibGljIEhUTUxUYWJsZVBhcnRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBj
cmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxUYWJsZVJvd0VsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIGludCByb3dJ
bmRleCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Um93SW5kZXgoaW50KTsKQEAgLTQxLDExICs0MSwx
MSBAQCBwdWJsaWM6CiAgICAgaW50IHNlY3Rpb25Sb3dJbmRleCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0U2VjdGlvblJvd0luZGV4KGludCk7CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBp
bnNlcnRDZWxsKEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBpbnNlcnRDZWxsKC0xLCBlYyk7
IH0KLSAgICBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBpbnNlcnRDZWxsKGludCBpbmRleCwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gaW5zZXJ0Q2VsbChFeGNlcHRp
b25Db2RlJiBlYykgeyByZXR1cm4gaW5zZXJ0Q2VsbCgtMSwgZWMpOyB9CisgICAgUmVmUHRyPEhU
TUxFbGVtZW50PiBpbnNlcnRDZWxsKGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZv
aWQgZGVsZXRlQ2VsbChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IGNlbGxzKCk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBj
ZWxscygpOwogICAgIHZvaWQgc2V0Q2VsbHMoSFRNTENvbGxlY3Rpb24gKiwgRXhjZXB0aW9uQ29k
ZSYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rp
b25FbGVtZW50LmNwcAppbmRleCA0OTEzZjEyLi45ODYwZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQCBp
bmxpbmUgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZwogewogfQogCi1QYXNzUmVmUHRyPEhUTUxUYWJsZVNlY3Rp
b25FbGVtZW50PiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MVGFibGVTZWN0
aW9uRWxlbWVudD4gSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpA
QCAtNTYsNyArNTYsNyBAQCBjb25zdCBTdHlsZVByb3BlcnRpZXMqIEhUTUxUYWJsZVNlY3Rpb25F
bGVtZW50OjphZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmlidXRlUwogCiAvLyB0aGVzZSBmdW5j
dGlvbnMgYXJlIHJhdGhlciBzbG93LCBzaW5jZSB3ZSBuZWVkIHRvIGdldCB0aGUgcm93IGF0CiAv
LyB0aGUgaW5kZXguLi4gYnV0IHRoZXkgYXJlbid0IHVzZWQgZHVyaW5nIHVzdWFsIEhUTUwgcGFy
c2luZyBhbnl3YXkKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50OjppbnNlcnRSb3coaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxIVE1M
RWxlbWVudD4gSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6Omluc2VydFJvdyhpbnQgaW5kZXgsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiByb3c7
CiAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBjaGlsZHJlbiA9IHJvd3MoKTsKQEAgLTc2LDcg
Kzc2LDcgQEAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6
Omluc2VydFJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkMKICAgICAgICAgICAgIGluc2VydEJlZm9y
ZShyb3csIG4sIGVjKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcm93LnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gcm93OwogfQogCiB2b2lkIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Ojpk
ZWxldGVSb3coaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTE0NSw3ICsxNDUsNyBA
QCB2b2lkIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpzZXRWQWxpZ24oY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKICAgICBzZXRBdHRyaWJ1dGUodmFsaWduQXR0ciwgdmFsdWUpOwogfQogCi1Q
YXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cygp
CitSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Ojpyb3dzKCkK
IHsKICAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVFNlY3Rpb25Sb3dzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaAppbmRl
eCA1MDVjY2RlLi44ZTc0YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVNlY3Rpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5oCkBAIC0zMywxMCArMzMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MVGFibGVQ
YXJ0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBp
bnNlcnRSb3coRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGluc2VydFJvdygtMSwgZWMpOyB9
Ci0gICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gaW5zZXJ0Um93KGludCBpbmRleCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gaW5zZXJ0Um93KEV4Y2VwdGlvbkNv
ZGUmIGVjKSB7IHJldHVybiBpbnNlcnRSb3coLTEsIGVjKTsgfQorICAgIFJlZlB0cjxIVE1MRWxl
bWVudD4gaW5zZXJ0Um93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVs
ZXRlUm93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgaW50IG51bVJvd3MoKSBj
b25zdDsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
dkFsaWduKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWQWxpZ24oY29uc3QgQXRvbWljU3RyaW5nJik7
CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiByb3dzKCk7CisgICAgUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiByb3dzKCk7CiAKIHByaXZhdGU6CiAgICAgSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCmluZGV4IGYxMDg4NDkuLjMyMGRl
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcApAQCAt
NTUsNyArNTUsNyBAQCBIVE1MVGVtcGxhdGVFbGVtZW50Ojp+SFRNTFRlbXBsYXRlRWxlbWVudCgp
CiAgICAgICAgIG1fY29udGVudC0+Y2xlYXJIb3N0KCk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFRl
bXBsYXRlRWxlbWVudD4gSFRNTFRlbXBsYXRlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MVGVtcGxhdGVF
bGVtZW50PiBIVE1MVGVtcGxhdGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTFRlbXBsYXRlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpAQCAtNjgsNyArNjgs
NyBAQCBEb2N1bWVudEZyYWdtZW50KiBIVE1MVGVtcGxhdGVFbGVtZW50Ojpjb250ZW50KCkgY29u
c3QKICAgICByZXR1cm4gbV9jb250ZW50LmdldCgpOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+IEhU
TUxUZW1wbGF0ZUVsZW1lbnQ6OmNsb25lTm9kZShib29sIGRlZXApCitSZWZQdHI8Tm9kZT4gSFRN
TFRlbXBsYXRlRWxlbWVudDo6Y2xvbmVOb2RlKGJvb2wgZGVlcCkKIHsKICAgICBpZiAoIWRlZXAp
CiAgICAgICAgIHJldHVybiBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmgKaW5kZXggYzgxZjdhNi4uYWExZTIyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmgKQEAgLTQyLDcgKzQy
LDcgQEAgY2xhc3MgVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudDsKIAogY2xhc3MgSFRN
TFRlbXBsYXRlRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFRlbXBsYXRlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFRlbXBsYXRl
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZp
cnR1YWwgfkhUTUxUZW1wbGF0ZUVsZW1lbnQoKTsKIAogICAgIERvY3VtZW50RnJhZ21lbnQqIGNv
bnRlbnQoKSBjb25zdDsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBI
VE1MVGVtcGxhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9j
dW1lbnQpIG92ZXJyaWRlOwogCiAgICAgbXV0YWJsZSBSZWZQdHI8VGVtcGxhdGVDb250ZW50RG9j
dW1lbnRGcmFnbWVudD4gbV9jb250ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKaW5kZXggM2U3OTdiNi4uOTFkNzFjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0xMDEsMTEgKzEwMSwxMSBAQCBIVE1M
VGV4dEFyZWFFbGVtZW50OjpIVE1MVGV4dEFyZWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JgogICAgIHNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVy
ZXIodHJ1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFRleHRBcmVhRWxlbWVudD4gSFRNTFRleHRB
cmVhRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQorUmVmUHRyPEhUTUxUZXh0QXJlYUVs
ZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsKICAg
ICBSZWZQdHI8SFRNTFRleHRBcmVhRWxlbWVudD4gdGV4dEFyZWEgPSBhZG9wdFJlZihuZXcgSFRN
TFRleHRBcmVhRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwogICAgIHRleHRBcmVh
LT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgcmV0dXJuIHRleHRBcmVhLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gdGV4dEFyZWE7CiB9CiAKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVu
dDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAppbmRleCBiZWRkMGExLi5mYzQxNjU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaApAQCAtMzMsNyArMzMs
NyBAQCBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogCiBjbGFzcyBIVE1MVGV4dEFyZWFFbGVtZW50
IGZpbmFsIDogcHVibGljIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVGV4dEFyZWFFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CisgICAgc3RhdGljIFJl
ZlB0cjxIVE1MVGV4dEFyZWFFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKICAgICBpbnQgY29scygpIGNvbnN0IHsgcmV0
dXJuIG1fY29sczsgfQogICAgIGludCByb3dzKCkgY29uc3QgeyByZXR1cm4gbV9yb3dzOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAppbmRleCA5NDg2OGRkLi5jZmM2
ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAgaW5saW5lIEhUTUxUaXRsZUVsZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0
aXRsZVRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxUaXRsZUVsZW1lbnQ+IEhUTUxUaXRsZUVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCitSZWZQdHI8SFRNTFRpdGxlRWxlbWVudD4gSFRNTFRpdGxlRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUaXRsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKaW5kZXggNWRlMWViNS4u
NGFkMTE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKQEAgLTI5LDcg
KzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MVGl0bGVFbGVtZW50IGZp
bmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxIVE1MVGl0bGVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MVGl0bGVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuY3BwCmluZGV4IDA3YzJjYzguLmE4NGUzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAtNjQsNyArNjQsNyBAQCBIVE1MVHJhY2tFbGVtZW50
Ojp+SFRNTFRyYWNrRWxlbWVudCgpCiAgICAgICAgIG1fdHJhY2stPmNsZWFyQ2xpZW50KCk7CiB9
CiAKLVBhc3NSZWZQdHI8SFRNTFRyYWNrRWxlbWVudD4gSFRNTFRyYWNrRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0
cjxIVE1MVHJhY2tFbGVtZW50PiBIVE1MVHJhY2tFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTFRyYWNrRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAppbmRleCA0NDg4OWE1Li45MTc3YjJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFz
cyBIVE1MTWVkaWFFbGVtZW50OwogCiBjbGFzcyBIVE1MVHJhY2tFbGVtZW50IGZpbmFsIDogcHVi
bGljIEhUTUxFbGVtZW50LCBwdWJsaWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBTdHJpbmcga2lu
ZCgpOwogICAgIHZvaWQgc2V0S2luZChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxVTGlzdEVsZW1lbnQuY3BwCmluZGV4IGJjOWU0MGYuLmQzYTY2OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcApAQCAtMzcsMTIgKzM3LDEyIEBAIEhUTUxV
TGlzdEVsZW1lbnQ6OkhUTUxVTGlzdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodWxUYWcpKTsKIH0KIAot
UGFzc1JlZlB0cjxIVE1MVUxpc3RFbGVtZW50PiBIVE1MVUxpc3RFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxVTGlzdEVsZW1lbnQ+IEhUTUxVTGlzdEVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MVUxpc3RFbGVtZW50KHVsVGFnLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhU
TUxVTGlzdEVsZW1lbnQ+IEhUTUxVTGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFVMaXN0RWxlbWVu
dD4gSFRNTFVMaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxVTGlz
dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxp
c3RFbGVtZW50LmgKaW5kZXggYjI1ZjA3MS4uZWY3ODljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVUxpc3RFbGVtZW50LmgKQEAgLTI5LDggKzI5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBIVE1MVUxpc3RFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVUxpc3RFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVUxpc3RFbGVtZW50PiBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1M
VUxpc3RFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxV
TGlzdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAog
cHJpdmF0ZToKICAgICBIVE1MVUxpc3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVW5rbm93bkVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVua25vd25FbGVtZW50LmgKaW5kZXggYjRj
NTkyNS4uM2UzZjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVW5rbm93
bkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVbmtub3duRWxlbWVudC5o
CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFVua25v
d25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxIVE1MVW5rbm93bkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgc3RhdGljIFJlZlB0cjxIVE1M
VW5rbm93bkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYgZG9jdW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxV
bmtub3duRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggYzFiN2ZmNS4uZTVmNjA0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSFRNTElt
YWdlTG9hZGVyOwogCiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxN
ZWRpYUVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxWaWRlb0Vs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmLCBib29sKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIHZp
ZGVvV2lkdGgoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCB2aWRlb0hlaWdo
dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oCmluZGV4IDc2ZmZkYTgu
LjIxNzdiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmgKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MV0JSRWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TFdCUkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEhUTUxXQlJFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTFdCUkVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNw
cAppbmRleCA0MGE3YjU3Li5hM2JjMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKICNpZiAh
UExBVEZPUk0oSU9TKQogY2xhc3MgSW1hZ2VFdmVudExpc3RlbmVyIGZpbmFsIDogcHVibGljIEV2
ZW50TGlzdGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRXZlbnRM
aXN0ZW5lcj4gY3JlYXRlKEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgSW1hZ2VFdmVudExpc3RlbmVyKGRvY3VtZW50KSk7IH0KKyAgICBzdGF0aWMgUmVmUHRy
PEltYWdlRXZlbnRMaXN0ZW5lcj4gY3JlYXRlKEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgSW1hZ2VFdmVudExpc3RlbmVyKGRvY3VtZW50KSk7IH0KIAogcHJp
dmF0ZToKICAgICBJbWFnZUV2ZW50TGlzdGVuZXIoSW1hZ2VEb2N1bWVudCYgZG9jdW1lbnQpCkBA
IC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEltYWdlRG9jdW1lbnRQYXJzZXIgZmlu
YWwgOiBwdWJsaWMgUmF3RGF0YURvY3VtZW50UGFyc2VyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbWFnZURvY3VtZW50UGFyc2VyPiBjcmVhdGUoSW1hZ2VEb2N1bWVudCYgZG9j
dW1lbnQpCisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURvY3VtZW50UGFyc2VyPiBjcmVhdGUoSW1h
Z2VEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEltYWdlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpKTsKICAgICB9CkBAIC05MSw3ICs5MSw3IEBA
IHByaXZhdGU6CiAKIGNsYXNzIEltYWdlRG9jdW1lbnRFbGVtZW50IGZpbmFsIDogcHVibGljIEhU
TUxJbWFnZUVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRG9j
dW1lbnRFbGVtZW50PiBjcmVhdGUoSW1hZ2VEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8
SW1hZ2VEb2N1bWVudEVsZW1lbnQ+IGNyZWF0ZShJbWFnZURvY3VtZW50Jik7CiAKIHByaXZhdGU6
CiAgICAgSW1hZ2VEb2N1bWVudEVsZW1lbnQoSW1hZ2VEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0x
MDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBJbWFnZURvY3VtZW50KiBtX2ltYWdlRG9jdW1l
bnQ7CiB9OwogCi1pbmxpbmUgUGFzc1JlZlB0cjxJbWFnZURvY3VtZW50RWxlbWVudD4gSW1hZ2VE
b2N1bWVudEVsZW1lbnQ6OmNyZWF0ZShJbWFnZURvY3VtZW50JiBkb2N1bWVudCkKK2lubGluZSBS
ZWZQdHI8SW1hZ2VEb2N1bWVudEVsZW1lbnQ+IEltYWdlRG9jdW1lbnRFbGVtZW50OjpjcmVhdGUo
SW1hZ2VEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFn
ZURvY3VtZW50RWxlbWVudChkb2N1bWVudCkpOwogfQpAQCAtMjAyLDcgKzIwMiw3IEBAIEltYWdl
RG9jdW1lbnQ6OkltYWdlRG9jdW1lbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAg
ICBsb2NrQ29tcGF0aWJpbGl0eU1vZGUoKTsKIH0KICAgICAKLVBhc3NSZWZQdHI8RG9jdW1lbnRQ
YXJzZXI+IEltYWdlRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCitSZWZQdHI8RG9jdW1lbnRQYXJz
ZXI+IEltYWdlRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7CiAgICAgcmV0dXJuIEltYWdlRG9j
dW1lbnRQYXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5oCmluZGV4IGUxZTlkZTIuLjcxZDViYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiAKIGNsYXNzIElt
YWdlRG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbWFnZURvY3VtZW50PiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBjb25z
dCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRG9jdW1lbnQ+IGNyZWF0ZShGcmFt
ZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJbWFnZURvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW1hZ2VEb2N1bWVudChGcmFtZSYsIGNvbnN0IFVSTCYp
OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIo
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFy
c2VyKCkgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRTaXplIGltYWdlU2l6ZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAppbmRleCBkMmM3YTVmLi40MWEzNzAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIC8vIEZJWE1FOiBTaGFyZSBtb3JlIGNvZGUgd2l0aCBQbHVnaW5E
b2N1bWVudFBhcnNlci4KIGNsYXNzIE1lZGlhRG9jdW1lbnRQYXJzZXIgZmluYWwgOiBwdWJsaWMg
UmF3RGF0YURvY3VtZW50UGFyc2VyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYURvY3VtZW50UGFyc2VyPiBjcmVhdGUoTWVkaWFEb2N1bWVudCYgZG9jdW1lbnQpCisgICAg
c3RhdGljIFJlZlB0cjxNZWRpYURvY3VtZW50UGFyc2VyPiBjcmVhdGUoTWVkaWFEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhRG9jdW1l
bnRQYXJzZXIoZG9jdW1lbnQpKTsKICAgICB9CkBAIC0xNTMsNyArMTUzLDcgQEAgTWVkaWFEb2N1
bWVudDo6fk1lZGlhRG9jdW1lbnQoKQogICAgIEFTU0VSVCghbV9yZXBsYWNlTWVkaWFFbGVtZW50
VGltZXIuaXNBY3RpdmUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IE1lZGlh
RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCitSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IE1lZGlhRG9j
dW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7CiAgICAgcmV0dXJuIE1lZGlhRG9jdW1lbnRQYXJzZXI6
OmNyZWF0ZSgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCmluZGV4IDlk
NzFjZTIuLjkxNzk4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFEb2N1bWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAg
IHN0YXRpYyBSZWZQdHI8TWVkaWFEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3Qg
VVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhRG9jdW1l
bnQoZnJhbWUsIHVybCkpOwogICAgIH0KQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBNZWRpYURvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CiAKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXggZWQwZjYyMi4uNzdl
MTRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIC8vIEZJWE1FOiBTaGFyZSBtb3JlIGNv
ZGUgd2l0aCBNZWRpYURvY3VtZW50UGFyc2VyLgogY2xhc3MgUGx1Z2luRG9jdW1lbnRQYXJzZXIg
ZmluYWwgOiBwdWJsaWMgUmF3RGF0YURvY3VtZW50UGFyc2VyIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQbHVnaW5Eb2N1bWVudFBhcnNlcj4gY3JlYXRlKFBsdWdpbkRvY3VtZW50
JiBkb2N1bWVudCkKKyAgICBzdGF0aWMgUmVmUHRyPFBsdWdpbkRvY3VtZW50UGFyc2VyPiBjcmVh
dGUoUGx1Z2luRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQbHVnaW5Eb2N1bWVudFBhcnNlcihkb2N1bWVudCkpOwogICAgIH0KQEAgLTE0OCw3
ICsxNDgsNyBAQCBQbHVnaW5Eb2N1bWVudDo6UGx1Z2luRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKICAgICBsb2NrQ29tcGF0aWJpbGl0eU1vZGUoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxEb2N1bWVudFBhcnNlcj4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCitSZWZQ
dHI8RG9jdW1lbnRQYXJzZXI+IFBsdWdpbkRvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogewogICAg
IHJldHVybiBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUGx1Z2luRG9jdW1lbnQuaAppbmRleCA2ZmM2ZWJjLi5hMjgxZGU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFdpZGdldDsK
IAogY2xhc3MgUGx1Z2luRG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Eb2N1bWVudD4gY3JlYXRlKEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZlB0cjxQbHVnaW5Eb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpbkRvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUGx1Z2luRG9jdW1lbnQoRnJh
bWUqLCBjb25zdCBVUkwmKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNl
cj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RG9jdW1lbnRQ
YXJzZXI+IGNyZWF0ZVBhcnNlcigpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRTaG91bGRMb2Fk
UGx1Z2luTWFudWFsbHkoYm9vbCBsb2FkTWFudWFsbHkpIHsgbV9zaG91bGRMb2FkUGx1Z2luTWFu
dWFsbHkgPSBsb2FkTWFudWFsbHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuY3Bw
CmluZGV4IDQ3YjY5YzcuLjY2YjBmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dERvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAgVGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZy
YW1lLCBjb25zdCBVUkwmIHVybCkKICAgICBsb2NrQ29tcGF0aWJpbGl0eU1vZGUoKTsKIH0KIAot
UGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gVGV4dERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQor
UmVmUHRyPERvY3VtZW50UGFyc2VyPiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7CiAg
ICAgcmV0dXJuIFRleHREb2N1bWVudFBhcnNlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHREb2N1bWVudC5oCmluZGV4IDU4ZTA1NTcuLmE1ZDI3ZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RG9jdW1lbnQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFRleHREb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHREb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZlB0cjxUZXh0RG9jdW1lbnQ+IGNyZWF0
ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBUZXh0RG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXh0RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBV
UkwmKTsKICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0
ZVBhcnNlcigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPERvY3VtZW50UGFyc2VyPiBj
cmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggODlkNDQ5Ni4uOTFhZGMzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAg
LTYyLDcgKzYyLDcgQEAgY2xhc3MgUHVtcFNlc3Npb247CiBjbGFzcyBIVE1MRG9jdW1lbnRQYXJz
ZXIgOiAgcHVibGljIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwgSFRNTFNjcmlwdFJ1bm5lckhv
c3QsIENhY2hlZFJlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IGNyZWF0
ZShIVE1MRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIHN0YXRpYyBSZWZQdHI8SFRNTERvY3VtZW50
UGFyc2VyPiBjcmVhdGUoSFRNTERvY3VtZW50JiBkb2N1bWVudCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTERvY3VtZW50UGFyc2VyKGRvY3VtZW50KSk7CiAgICAgfQpA
QCAtOTMsNyArOTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmb3JjZVBsYWludGV4dEZvclRl
eHREb2N1bWVudCgpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxEb2N1
bWVudFBhcnNlcj4gY3JlYXRlKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW50KiBj
b250ZXh0RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQor
ICAgIHN0YXRpYyBSZWZQdHI8SFRNTERvY3VtZW50UGFyc2VyPiBjcmVhdGUoRG9jdW1lbnRGcmFn
bWVudCYgZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9s
aWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxEb2N1bWVudFBhcnNlcihmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNlckNv
bnRlbnRQb2xpY3kpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MU3RhY2tJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Rh
Y2tJdGVtLmgKaW5kZXggMzcwMTM1NC4uM2Q5NTUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxTdGFja0l0ZW0uaApAQCAtNDgsMTMgKzQ4LDEzIEBAIHB1YmxpYzoKICAgICB9
OwogCiAgICAgLy8gVXNlZCBieSBkb2N1bWVudCBmcmFnbWVudCBub2RlIGFuZCBjb250ZXh0IGVs
ZW1lbnQuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFN0YWNrSXRlbT4gY3JlYXRlKFBhc3NS
ZWZQdHI8Q29udGFpbmVyTm9kZT4gbm9kZSwgSXRlbVR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVm
UHRyPEhUTUxTdGFja0l0ZW0+IGNyZWF0ZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IG5vZGUs
IEl0ZW1UeXBlIHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxT
dGFja0l0ZW0obm9kZSwgdHlwZSkpOwogICAgIH0KIAogICAgIC8vIFVzZWQgYnkgSFRNTEVsZW1l
bnRTdGFjayBhbmQgSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC4KLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MU3RhY2tJdGVtPiBjcmVhdGUoUGFzc1JlZlB0cjxDb250YWluZXJOb2RlPiBub2Rl
LCBBdG9taWNIVE1MVG9rZW4qIHRva2VuLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVS
SSA9IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCisgICAgc3RhdGljIFJlZlB0cjxIVE1M
U3RhY2tJdGVtPiBjcmVhdGUoUGFzc1JlZlB0cjxDb250YWluZXJOb2RlPiBub2RlLCBBdG9taWNI
VE1MVG9rZW4qIHRva2VuLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSA9IEhUTUxO
YW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxTdGFja0l0ZW0obm9kZSwgdG9rZW4sIG5hbWVzcGFjZVVSSSkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmlu
ZGV4IGY5Y2VkNmQuLjQ4M2ZhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNTk4LDcgKzU5OCw3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgU2xpZGVyVGh1bWJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiAgICAg
fQogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6Y2xvbmVFbGVt
ZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpCitSZWZQdHI8RWxlbWVudD4gU2xpZGVy
VGh1bWJFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkK
IHsKICAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAppbmRleCBhMDRhMDU3Li5mM2VlZDMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
aApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIFNsaWRlclRodW1iRWxlbWVudChEb2N1
bWVudCYpOwogCiAgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGls
ZHJlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVu
dFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIG1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFzcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgRWxlbWVudCogZm9jdXNEZWxlZ2F0ZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5k
ZXggMzIyYWJlYi4uYzcyN2Q3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFBh
c3NSZWZQdHI8VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJFbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQmIGRvCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0Q29udHJv
bElubmVyRWxlbWVudChkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBU
ZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHls
ZSYpCitSZWZQdHI8UmVuZGVyU3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpjdXN0b21T
dHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJikKIHsKICAgICBSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUmIHBhcmVudFJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lPigqc2hhZG93SG9zdCgpLT5yZW5kZXJlcigpKTsKICAgICByZXR1cm4gcGFyZW50UmVu
ZGVyZXIuY3JlYXRlSW5uZXJCbG9ja1N0eWxlKCZwYXJlbnRSZW5kZXJlci5zdHlsZSgpKTsKQEAg
LTEyMCw3ICsxMjAsNyBAQCBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIFRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxS
ZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2s+KEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcigpKTsK
IH0KIAotUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50
OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJikKK1JlZlB0cjxSZW5kZXJTdHls
ZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJl
bmRlclN0eWxlJikKIHsKICAgICBSZW5kZXJUZXh0Q29udHJvbCYgcGFyZW50UmVuZGVyZXIgPSBk
b3duY2FzdDxSZW5kZXJUZXh0Q29udHJvbD4oKnNoYWRvd0hvc3QoKS0+cmVuZGVyZXIoKSk7CiAg
ICAgcmV0dXJuIHBhcmVudFJlbmRlcmVyLmNyZWF0ZUlubmVyVGV4dFN0eWxlKCZwYXJlbnRSZW5k
ZXJlci5zdHlsZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKaW5kZXggYzMxMjhiOC4uZDM5Y2RiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgVGV4dENvbnRy
b2xJbm5lckVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JS
ZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9t
U3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VG
b2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50
LmNwcAppbmRleCBkNzRiODM4Li5hOTQ3OTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUGFzc1JlZlB0cjxXZWJWVFRF
bGVtZW50PiBXZWJWVFRFbGVtZW50OjpjcmVhdGUoV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUsIERv
Y3VtZW4KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZUVEVsZW1lbnQobm9kZVR5cGUsIGRv
Y3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y2xvbmVF
bGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpCitSZWZQdHI8RWxlbWVudD4gV2Vi
VlRURWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpCiB7
CiAgICAgUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IGNsb25lID0gY3JlYXRlKHN0YXRpY19jYXN0PFdl
YlZUVE5vZGVUeXBlPihtX3dlYlZUVE5vZGVUeXBlKSwgZG9jdW1lbnQoKSk7CiAgICAgY2xvbmUt
PnNldExhbmd1YWdlKG1fbGFuZ3VhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VEVsZW1lbnQuaAppbmRleCA1MmFlNDg3Li40MmE3NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gY3JlYXRlKGNvbnN0IFdlYlZUVE5vZGVUeXBl
LCBEb2N1bWVudCYpOwogICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUVxdWl2YWxl
bnRIVE1MRWxlbWVudChEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1l
bnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRl
c0FuZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFdlYlZUVE5vZGVUeXBlKFdl
YlZUVE5vZGVUeXBlIHR5cGUpIHsgbV93ZWJWVFROb2RlVHlwZSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPih0eXBlKTsgfQogICAgIFdlYlZUVE5vZGVUeXBlIHdlYlZUVE5vZGVUeXBlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViVlRUTm9kZVR5cGU+KG1fd2ViVlRUTm9kZVR5cGUpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCmluZGV4IDZjNTUwMzIuLmZjNGJi
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCkBAIC0zMiw3ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2lua0RvY3VtZW50UGFyc2VyIGZpbmFs
IDogcHVibGljIFJhd0RhdGFEb2N1bWVudFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U2lua0RvY3VtZW50UGFyc2VyPiBjcmVhdGUoU2lua0RvY3VtZW50JiBkb2N1bWVu
dCkKKyAgICBzdGF0aWMgUmVmUHRyPFNpbmtEb2N1bWVudFBhcnNlcj4gY3JlYXRlKFNpbmtEb2N1
bWVudCYgZG9jdW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNpbmtE
b2N1bWVudFBhcnNlcihkb2N1bWVudCkpOwogICAgIH0KQEAgLTU2LDcgKzU2LDcgQEAgU2lua0Rv
Y3VtZW50OjpTaW5rRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICBs
b2NrQ29tcGF0aWJpbGl0eU1vZGUoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4g
U2lua0RvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQorUmVmUHRyPERvY3VtZW50UGFyc2VyPiBTaW5r
RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7CiAgICAgcmV0dXJuIFNpbmtEb2N1bWVudFBhcnNl
cjo6Y3JlYXRlKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
aW5rRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaAppbmRl
eCBjYTFlNzkwLi5jNzgxZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lu
a0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5oCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2lua0RvY3VtZW50
IGZpbmFsIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2lua0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkK
KyAgICBzdGF0aWMgUmVmUHRyPFNpbmtEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNpbmtEb2N1
bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFNpbmtEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogICAgIAotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CisgICAgdmly
dHVhbCBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpOwogfTsKIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggMjI5ZTBlYS4uNWJiYjljOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApAQCAtNTAsNyArNTAsNyBA
QCBNYXRoTUxFbGVtZW50OjpNYXRoTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKIH0KICAgICAKLVBhc3NSZWZQdHI8TWF0aE1MRWxl
bWVudD4gTWF0aE1MRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxNYXRoTUxFbGVtZW50PiBNYXRoTUxFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWF0aE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggYjk4ZmJl
Yi4uMTliZDU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWF0aE1MRWxlbWVudCA6IHB1
YmxpYyBTdHlsZWRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNYXRo
TUxFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPE1hdGhNTEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCiAgICAgaW50IGNvbFNwYW4oKSBjb25zdDsK
ICAgICBpbnQgcm93U3BhbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKaW5k
ZXggM2I5MGQzYy4uMGRlYTA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCkBAIC03
Niw3ICs3Niw3IEBAIHZvaWQgU1ZHRG9jdW1lbnQ6OnVwZGF0ZVBhbihjb25zdCBGbG9hdFBvaW50
JiBwb3MpIGNvbnN0CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50PiBTVkdEb2N1bWVu
dDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0CitSZWZQdHI8RG9jdW1lbnQ+
IFNWR0RvY3VtZW50OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gY3JlYXRlKG51bGxwdHIsIHVybCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
LmgKaW5kZXggZWY1YmUyZS4uZmY1MWQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgKQEAg
LTMyLDcgKzMyLDcgQEAgY2xhc3MgU1ZHU1ZHRWxlbWVudDsKIAogY2xhc3MgU1ZHRG9jdW1lbnQg
ZmluYWwgOiBwdWJsaWMgRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNWR0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBz
dGF0aWMgUmVmUHRyPFNWR0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRG9jdW1lbnQoZnJh
bWUsIHVybCkpOwogICAgIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBTVkdEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogCi0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPERvY3VtZW50PiBjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RG9jdW1lbnQ+IGNsb25lRG9jdW1lbnRXaXRob3V0Q2hp
bGRyZW4oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0UG9pbnQgbV90cmFuc2xhdGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDE1NzQ3NWEuLmNjMGY5NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTc4NCw3ICs3ODQsNyBAQCB2b2lkIFNWR0VsZW1l
bnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQp
CiAgICAgY29udGV4dEVsZW1lbnQtPnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKTsKIH0KIAot
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU1ZHRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJl
cihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCitSZWZQdHI8UmVuZGVyU3R5bGU+IFNWR0VsZW1l
bnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKQogewog
ICAgIGlmICghY29ycmVzcG9uZGluZ0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGRvY3VtZW50
KCkuZW5zdXJlU3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCh0aGlzLCAmcGFyZW50U3R5
bGUpOwpAQCAtMTEwMSw3ICsxMTAxLDcgQEAgdm9pZCBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBTVkdFbGVtZW50SW5zdGFuY2U6Omlu
dmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQodGhpcyk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NT
VmFsdWU+IFNWR0VsZW1lbnQ6OmdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBTdHJpbmcm
IG5hbWUpCitSZWZQdHI8Q1NTVmFsdWU+IFNWR0VsZW1lbnQ6OmdldFByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKCFoYXNBdHRyaWJ1dGVzV2l0aG91
dFVwZGF0ZSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4
IDczNDI1YTEuLjNiMjQ0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtNjYsNyArNjYs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBbmltYXRhYmxlQ1NTUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGVXaXRo
U1ZHRE9NKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByZXNl
bnRhdGlvbkF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIFJlZlB0cjxDU1NWYWx1
ZT4gZ2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzTWFya2VycygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCB7IHJldHVybiAhbV9lbGVtZW50c1dpdGhS
ZWxhdGl2ZUxlbmd0aHMuaXNFbXB0eSgpOyB9CiAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGlu
Z1Jlc291cmNlSGFuZGxpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0xMTcsNyArMTE3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVB
bGxBbmltYXRlZFNWR0F0dHJpYnV0ZShTVkdFbGVtZW50Kik7CiAgCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJiBw
YXJlbnRTdHlsZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1
c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKSBvdmVycmlkZTsK
IAogICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCk7CiAgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoRWxlbWVudC5jcHAKaW5kZXggNmIzMGE2NS4uZWZiZGYwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuY3BwCkBAIC05MSw3ICs5MSw3IEBAIGlubGluZSBTVkdQYXRoRWxlbWVu
dDo6U1ZHUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvCiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdQYXRoRWxlbWVudCgpOwog
fQogCi1QYXNzUmVmUHRyPFNWR1BhdGhFbGVtZW50PiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxT
VkdQYXRoRWxlbWVudD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTVkdQYXRoRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpAQCAtMTE3LDk3ICsxMTcs
OTcgQEAgdW5zaWduZWQgU1ZHUGF0aEVsZW1lbnQ6OmdldFBhdGhTZWdBdExlbmd0aChmbG9hdCBs
ZW5ndGgpCiAgICAgcmV0dXJuIHBhdGhTZWc7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0Ns
b3NlUGF0aD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGgoU1ZHUGF0
aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2VnQ2xvc2VQYXRoPiBTVkdQYXRoRWxlbWVu
dDo6Y3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aChTVkdQYXRoU2VnUm9sZSByb2xlKQogewogICAg
IHJldHVybiBTVkdQYXRoU2VnQ2xvc2VQYXRoOjpjcmVhdGUodGhpcywgcm9sZSk7CiB9CiAKLVBh
c3NSZWZQdHI8U1ZHUGF0aFNlZ01vdmV0b0Ficz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1Bh
dGhTZWdNb3ZldG9BYnMoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKK1Jl
ZlB0cjxTVkdQYXRoU2VnTW92ZXRvQWJzPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNl
Z01vdmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlKQogewogICAg
IHJldHVybiBTVkdQYXRoU2VnTW92ZXRvQWJzOjpjcmVhdGUodGhpcywgcm9sZSwgeCwgeSk7CiB9
CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ01vdmV0b1JlbD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0
ZVNWR1BhdGhTZWdNb3ZldG9SZWwoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9s
ZSkKK1JlZlB0cjxTVkdQYXRoU2VnTW92ZXRvUmVsPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZH
UGF0aFNlZ01vdmV0b1JlbChmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlKQog
ewogICAgIHJldHVybiBTVkdQYXRoU2VnTW92ZXRvUmVsOjpjcmVhdGUodGhpcywgcm9sZSwgeCwg
eSk7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b0Ficz4gU1ZHUGF0aEVsZW1lbnQ6
OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1Jv
bGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2VnTGluZXRvQWJzPiBTVkdQYXRoRWxlbWVudDo6Y3Jl
YXRlU1ZHUGF0aFNlZ0xpbmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSBy
b2xlKQogewogICAgIHJldHVybiBTVkdQYXRoU2VnTGluZXRvQWJzOjpjcmVhdGUodGhpcywgcm9s
ZSwgeCwgeSk7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b1JlbD4gU1ZHUGF0aEVs
ZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9SZWwoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0
aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2VnTGluZXRvUmVsPiBTVkdQYXRoRWxlbWVu
dDo6Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbChmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2Vn
Um9sZSByb2xlKQogewogICAgIHJldHVybiBTVkdQYXRoU2VnTGluZXRvUmVsOjpjcmVhdGUodGhp
cywgcm9sZSwgeCwgeSk7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Fi
cz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQgeTIsIFNWR1Bh
dGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficz4gU1ZHUGF0
aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMoZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQgeTIsIFNWR1BhdGhTZWdSb2xl
IHJvbGUpCiB7CiAgICAgcmV0dXJuIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnM6OmNyZWF0ZSh0
aGlzLCByb2xlLCB4LCB5LCB4MSwgeTEsIHgyLCB5Mik7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY1JlbD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4
MiwgZmxvYXQgeTIsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZl
dG9DdWJpY1JlbD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNS
ZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQg
eTIsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7CiAgICAgcmV0dXJuIFNWR1BhdGhTZWdDdXJ2ZXRv
Q3ViaWNSZWw6OmNyZWF0ZSh0aGlzLCByb2xlLCB4LCB5LCB4MSwgeTEsIHgyLCB5Mik7CiB9CiAK
LVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnM+IFNWR1BhdGhFbGVtZW50
OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB4MSwgZmxvYXQgeTEsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNBYnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIFNW
R1BhdGhTZWdSb2xlIHJvbGUpCiB7CiAgICAgcmV0dXJuIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljQWJzOjpjcmVhdGUodGhpcywgcm9sZSwgeCwgeSwgeDEsIHkxKTsKIH0KIAotUGFzc1JlZlB0
cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBm
bG9hdCB5MSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpY1JlbD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwgU1ZHUGF0aFNlZ1Jv
bGUgcm9sZSkKIHsKICAgICByZXR1cm4gU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWw6OmNy
ZWF0ZSh0aGlzLCByb2xlLCB4LCB5LCB4MSwgeTEpOwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhT
ZWdBcmNBYnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQXJjQWJzKGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNG
bGFnLCBib29sIHN3ZWVwRmxhZywgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRo
U2VnQXJjQWJzPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0FyY0FicyhmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJj
RmxhZywgYm9vbCBzd2VlcEZsYWcsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7CiAgICAgcmV0dXJu
IFNWR1BhdGhTZWdBcmNBYnM6OmNyZWF0ZSh0aGlzLCByb2xlLCB4LCB5LCByMSwgcjIsIGFuZ2xl
LCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZyk7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0Fy
Y1JlbD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdBcmNSZWwoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcs
IGJvb2wgc3dlZXBGbGFnLCBTVkdQYXRoU2VnUm9sZSByb2xlKQorUmVmUHRyPFNWR1BhdGhTZWdB
cmNSZWw+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQXJjUmVsKGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFn
LCBib29sIHN3ZWVwRmxhZywgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4gU1ZH
UGF0aFNlZ0FyY1JlbDo6Y3JlYXRlKHRoaXMsIHJvbGUsIHgsIHksIHIxLCByMiwgYW5nbGUsIGxh
cmdlQXJjRmxhZywgc3dlZXBGbGFnKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGluZXRv
SG9yaXpvbnRhbEFicz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jp
em9udGFsQWJzKGZsb2F0IHgsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNl
Z0xpbmV0b0hvcml6b250YWxBYnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTGlu
ZXRvSG9yaXpvbnRhbEFicyhmbG9hdCB4LCBTVkdQYXRoU2VnUm9sZSByb2xlKQogewogICAgIHJl
dHVybiBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFiczo6Y3JlYXRlKHRoaXMsIHJvbGUsIHgp
OwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsPiBTVkdQYXRo
RWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwoZmxvYXQgeCwgU1ZH
UGF0aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbD4g
U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsKGZsb2F0
IHgsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7CiAgICAgcmV0dXJuIFNWR1BhdGhTZWdMaW5ldG9I
b3Jpem9udGFsUmVsOjpjcmVhdGUodGhpcywgcm9sZSwgeCk7CiB9CiAKLVBhc3NSZWZQdHI8U1ZH
UGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNl
Z0xpbmV0b1ZlcnRpY2FsQWJzKGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0
aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzKGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7CiAg
ICAgcmV0dXJuIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFiczo6Y3JlYXRlKHRoaXMsIHJvbGUs
IHkpOwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbD4gU1ZHUGF0
aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbChmbG9hdCB5LCBTVkdQ
YXRoU2VnUm9sZSByb2xlKQorUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbD4gU1ZH
UGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbChmbG9hdCB5LCBT
VkdQYXRoU2VnUm9sZSByb2xlKQogewogICAgIHJldHVybiBTVkdQYXRoU2VnTGluZXRvVmVydGlj
YWxSZWw6OmNyZWF0ZSh0aGlzLCByb2xlLCB5KTsKIH0KIAotUGFzc1JlZlB0cjxTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljU21vb3RoQWJzPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1
cnZldG9DdWJpY1Ntb290aEFicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MiwgZmxvYXQgeTIs
IFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290
aEFicz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhB
YnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSBy
b2xlKQogewogICAgIHJldHVybiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzOjpjcmVh
dGUodGhpcywgcm9sZSwgeCwgeSwgeDIsIHkyKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljU21vb3RoUmVsPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1
cnZldG9DdWJpY1Ntb290aFJlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MiwgZmxvYXQgeTIs
IFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290
aFJlbD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhS
ZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSBy
b2xlKQogewogICAgIHJldHVybiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsOjpjcmVh
dGUodGhpcywgcm9sZSwgeCwgeSwgeDIsIHkyKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpY1Ntb290aEFicz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKGZsb2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdS
b2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnM+IFNW
R1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyhm
bG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlKQogewogICAgIHJldHVybiBTVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFiczo6Y3JlYXRlKHRoaXMsIHJvbGUsIHgsIHkp
OwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsPiBT
VkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwo
ZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsKGZsb2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdS
b2xlIHJvbGUpCiB7CiAgICAgcmV0dXJuIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3Ro
UmVsOjpjcmVhdGUodGhpcywgcm9sZSwgeCwgeSk7CiB9CkBAIC0zMTMsNyArMzEzLDcgQEAgU1ZH
UGF0aEJ5dGVTdHJlYW0qIFNWR1BhdGhFbGVtZW50OjpwYXRoQnl0ZVN0cmVhbSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJP
ZmYqPihwcm9wZXJ0eSktPmFuaW1hdGVkUGF0aEJ5dGVTdHJlYW0oKTsKIH0KIAotUGFzc1JlZlB0
cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdQYXRoRWxlbWVudDo6bG9va3VwT3JDcmVhdGVEV3Jh
cHBlcihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKK1JlZlB0cjxTVkdBbmltYXRlZFByb3Bl
cnR5PiBTVkdQYXRoRWxlbWVudDo6bG9va3VwT3JDcmVhdGVEV3JhcHBlcihTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCkKIHsKICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwogICAgIFNWR1Bh
dGhFbGVtZW50JiBvd25lclR5cGUgPSBkb3duY2FzdDxTVkdQYXRoRWxlbWVudD4oKmNvbnRleHRF
bGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKaW5kZXggYjY0YjRjNS4uNmEy
ZDc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKQEAgLTU1LDMxICs1NSwzMSBA
QCBjbGFzcyBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZjsKIGNsYXNzIFNWR1BhdGhFbGVt
ZW50IGZpbmFsIDogcHVibGljIFNWR0dyYXBoaWNzRWxlbWVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxTVkdQYXRoRWxlbWVu
dD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIAogICAgIGZs
b2F0IGdldFRvdGFsTGVuZ3RoKCk7CiAgICAgU1ZHUG9pbnQgZ2V0UG9pbnRBdExlbmd0aChmbG9h
dCBkaXN0YW5jZSk7CiAgICAgdW5zaWduZWQgZ2V0UGF0aFNlZ0F0TGVuZ3RoKGZsb2F0IGRpc3Rh
bmNlKTsKIAotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0Nsb3NlUGF0aD4gY3JlYXRlU1ZHUGF0
aFNlZ0Nsb3NlUGF0aChTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUp
OwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ01vdmV0b0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ01v
dmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1Vu
ZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ01vdmV0b1JlbD4gY3JlYXRl
U1ZHUGF0aFNlZ01vdmV0b1JlbChmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xl
ID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0
b0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRo
U2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQdHI8U1ZH
UGF0aFNlZ0xpbmV0b1JlbD4gY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbChmbG9hdCB4LCBmbG9h
dCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAgIFBh
c3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ0N1cnZl
dG9DdWJpY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgy
LCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsK
LSAgICBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw+IGNyZWF0ZVNWR1BhdGhT
ZWdDdXJ2ZXRvQ3ViaWNSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBm
bG9hdCB4MiwgZmxvYXQgeTIsIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVk
Um9sZSk7Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficz4gY3Jl
YXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eDEsIGZsb2F0IHkxLCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUp
OwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWw+IGNyZWF0ZVNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBm
bG9hdCB5MSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKLSAg
ICBQYXNzUmVmUHRyPFNWR1BhdGhTZWdBcmNBYnM+IGNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMoZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJn
ZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnLCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1Vu
ZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0FyY1JlbD4gY3JlYXRlU1ZH
UGF0aFNlZ0FyY1JlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0
IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIFNWR1BhdGhTZWdSb2xl
IHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2Vn
TGluZXRvSG9yaXpvbnRhbEFicz4gY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMo
ZmxvYXQgeCwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKLSAg
ICBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsPiBjcmVhdGVTVkdQYXRo
U2VnTGluZXRvSG9yaXpvbnRhbFJlbChmbG9hdCB4LCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0
aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRp
Y2FsQWJzPiBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMoZmxvYXQgeSwgU1ZHUGF0
aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKLSAgICBQYXNzUmVmUHRyPFNW
R1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbD4gY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2Fs
UmVsKGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7
Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzPiBjcmVhdGVT
VkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgy
LCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsK
LSAgICBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw+IGNyZWF0ZVNW
R1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDIs
IGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwot
ICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnM+IGNyZWF0
ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKGZsb2F0IHgsIGZsb2F0IHksIFNW
R1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgUGFzc1JlZlB0
cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbD4gY3JlYXRlU1ZHUGF0aFNlZ0N1
cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUg
cm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0Nsb3Nl
UGF0aD4gY3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aChTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0
aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIFJlZlB0cjxTVkdQYXRoU2VnTW92ZXRvQWJzPiBjcmVh
dGVTVkdQYXRoU2VnTW92ZXRvQWJzKGZsb2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJv
bGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAgUmVmUHRyPFNWR1BhdGhTZWdNb3ZldG9S
ZWw+IGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNl
Z1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNl
Z0xpbmV0b0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5LCBT
VkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIFJlZlB0cjxT
VkdQYXRoU2VnTGluZXRvUmVsPiBjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsKGZsb2F0IHgsIGZs
b2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAg
UmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnM+IGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRv
Q3ViaWNBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4Miwg
ZmxvYXQgeTIsIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Cisg
ICAgUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw+IGNyZWF0ZVNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4
MiwgZmxvYXQgeTIsIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7
CisgICAgUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzPiBjcmVhdGVTVkdQYXRo
U2VnQ3VydmV0b1F1YWRyYXRpY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQg
eTEsIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAgUmVm
UHRyPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsPiBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0
b1F1YWRyYXRpY1JlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIFNWR1Bh
dGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAgUmVmUHRyPFNWR1Bh
dGhTZWdBcmNBYnM+IGNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dl
ZXBGbGFnLCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOworICAg
IFJlZlB0cjxTVkdQYXRoU2VnQXJjUmVsPiBjcmVhdGVTVkdQYXRoU2VnQXJjUmVsKGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNG
bGFnLCBib29sIHN3ZWVwRmxhZywgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmlu
ZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnM+IGNyZWF0
ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzKGZsb2F0IHgsIFNWR1BhdGhTZWdSb2xlIHJv
bGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAgUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9I
b3Jpem9udGFsUmVsPiBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbChmbG9hdCB4
LCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIFJlZlB0
cjxTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnM+IGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0
aWNhbEFicyhmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJv
bGUpOworICAgIFJlZlB0cjxTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWw+IGNyZWF0ZVNWR1Bh
dGhTZWdMaW5ldG9WZXJ0aWNhbFJlbChmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0
aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIFJlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21v
b3RoQWJzPiBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdV
bmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJl
bD4gY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbChmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB4MiwgZmxvYXQgeTIsIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZp
bmVkUm9sZSk7CisgICAgUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJz
PiBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyhmbG9hdCB4LCBmbG9h
dCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIFJl
ZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbD4gY3JlYXRlU1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1Jv
bGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKIAogICAgIC8vIFVzZWQgaW4gdGhlIGJp
bmRpbmdzIG9ubHkuCiAgICAgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqIHBhdGhTZWdM
aXN0KCk7CkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEN1c3RvbSAnZCcg
cHJvcGVydHkKICAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZUQoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxv
b2t1cE9yQ3JlYXRlRFdyYXBwZXIoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOworICAgIHN0
YXRpYyBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVEV3JhcHBlcihT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHUGF0aEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKFBhdGhMZW5ndGgsIHBhdGhMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxl
bWVudC5jcHAKaW5kZXggYjRiM2ZiZC4uYjMzZGJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
Y3JpcHRFbGVtZW50LmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIGJvb2wgU1ZHU2NyaXB0RWxlbWVu
dDo6aGFzU291cmNlQXR0cmlidXRlKCkgY29uc3QKICAgICByZXR1cm4gaGFzQXR0cmlidXRlKFhM
aW5rTmFtZXM6OmhyZWZBdHRyKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBTVkdTY3JpcHRF
bGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKK1JlZlB0
cjxFbGVtZW50PiBTVkdTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRl
c0FuZENoaWxkcmVuKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1NjcmlwdEVsZW1l
bnQodGFnUU5hbWUoKSwgZG9jdW1lbnQoKSwgZmFsc2UsIGFscmVhZHlTdGFydGVkKCkpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCmluZGV4IDIzZTkyOWQuLmFhYzk5YzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaApAQCAtNjUsNyArNjUsNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgb3ZlcnJpZGUg
eyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpkaXNwYXRjaExvYWRFdmVudCh0aGlzKTsg
fQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRB
dHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxFbGVt
ZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZAo=
</data>
<flag name="review"
          id="266984"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242108</attachid>
            <date>2014-11-21 21:22:30 -0800</date>
            <delta_ts>2014-11-21 22:34:28 -0800</delta_ts>
            <desc>Phase I</desc>
            <filename>bug-138995-phase1.diff</filename>
            <type>text/plain</type>
            <size>226909</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZjQwMTdmLi42MDgxYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTQtMTEtMjEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIENvbnZlcnQgUGFzc1JlZlB0ciByZXR1cm4gdHlwZXMgdG8gUmVmUHRyLgorICAgICAgICA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTM4OTk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cyBDYXJsc3Nvbi4KKworICAgICAgICBDb252ZXJ0IGFuIGFzc29ydG1lbnQgb2YgRE9NIGFuZCBI
VE1MIHJlbGF0ZWQgZnVuY3Rpb25zCisgICAgICAgIHRvIHJldHVybiBSZWZQdHIgaW5zdGVhZCBv
ZiBQYXNzUmVmUHRyLgorCiAyMDE0LTExLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgaU9TIGJ1aWxkIGZpeCBhZnRlciByMTc2NDYyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA1OGJkOTM4Li43
NmFkY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAt
MzY1LDYgKzM2NSwxMSBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIHZpZXct
PndyYXAoZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VD4gcHRyKQoreworICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCwgcHRyLmdldCgpKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFQ+IHB0cikKIHsKICAgICByZXR1cm4g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXgg
NzFkYTljNi4uZTZiNGQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtNTMsMTQgKzUzLDE0IEBAIEF0
dHI6OkF0dHIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHN0CiB7CiB9CiAKLVBhc3NSZWZQdHI8QXR0cj4gQXR0cjo6Y3Jl
YXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCitSZWZQdHI8
QXR0cj4gQXR0cjo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUpCiB7CiAgICAgUmVmUHRyPEF0dHI+IGF0dHIgPSBhZG9wdFJlZihuZXcgQXR0cihlbGVt
ZW50LCBuYW1lKSk7CiAgICAgYXR0ci0+Y3JlYXRlVGV4dENoaWxkKCk7CiAgICAgcmV0dXJuIGF0
dHIucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEF0dHI+IEF0dHI6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCitSZWZQdHI8QXR0cj4gQXR0cjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGFkb3B0UmVmKG5ldyBBdHRyKGRvY3VtZW50LCBuYW1l
LCB2YWx1ZSkpOwogICAgIGF0dHItPmNyZWF0ZVRleHRDaGlsZCgpOwpAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgQXR0cjo6c2V0Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYgdiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgc2V0VmFsdWUodiwgZWMpOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+IEF0dHI6
OmNsb25lTm9kZShib29sIC8qZGVlcCovKQorUmVmUHRyPE5vZGU+IEF0dHI6OmNsb25lTm9kZShi
b29sIC8qZGVlcCovKQogewogICAgIFJlZlB0cjxBdHRyPiBjbG9uZSA9IGFkb3B0UmVmKG5ldyBB
dHRyKGRvY3VtZW50KCksIHF1YWxpZmllZE5hbWUoKSwgdmFsdWUoKSkpOwogICAgIGNsb25lQ2hp
bGROb2RlcyhjbG9uZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCBhN2E4OTQ1Li5jMTBmY2ZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BdHRyLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgTXV0YWJsZVN0eWxlUHJvcGVydGll
czsKIAogY2xhc3MgQXR0ciBmaW5hbCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdHRyPiBjcmVhdGUoRWxlbWVudCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdHRyPiBjcmVhdGUoRG9jdW1lbnQm
LCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CisgICAg
c3RhdGljIFJlZlB0cjxBdHRyPiBjcmVhdGUoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEF0dHI+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKICAgICB2aXJ0dWFsIH5BdHRy
KCk7CiAKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIHF1YWxpZmllZE5hbWUoKS50
b1N0cmluZygpOyB9CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFN0
cmluZyBub2RlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2YWx1ZSgpOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRl
ZXApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRl
ZXApIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzQXR0cmlidXRlTm9kZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxs
b3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ0RBVEFTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24u
Y3BwCmluZGV4IDRiMzk3MmEuLmMzMTI3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DREFUQVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24u
Y3BwCkBAIC0zMSw3ICszMSw3IEBAIGlubGluZSBDREFUQVNlY3Rpb246OkNEQVRBU2VjdGlvbihE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKIH0KIAotUGFzc1JlZlB0
cjxDREFUQVNlY3Rpb24+IENEQVRBU2VjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiBkYXRhKQorUmVmUHRyPENEQVRBU2VjdGlvbj4gQ0RBVEFTZWN0aW9uOjpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDREFUQVNlY3Rpb24oZG9jdW1lbnQsIGRhdGEpKTsKIH0KQEAgLTQ2
LDcgKzQ2LDcgQEAgTm9kZTo6Tm9kZVR5cGUgQ0RBVEFTZWN0aW9uOjpub2RlVHlwZSgpIGNvbnN0
CiAgICAgcmV0dXJuIENEQVRBX1NFQ1RJT05fTk9ERTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBD
REFUQVNlY3Rpb246OmNsb25lTm9kZShib29sIC8qZGVlcCovKQorUmVmUHRyPE5vZGU+IENEQVRB
U2VjdGlvbjo6Y2xvbmVOb2RlKGJvb2wgLypkZWVwKi8pCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShk
b2N1bWVudCgpLCBkYXRhKCkpOwogfQpAQCAtNTYsNyArNTYsNyBAQCBib29sIENEQVRBU2VjdGlv
bjo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLVBhc3NSZWZQdHI8VGV4dD4gQ0RBVEFTZWN0aW9uOjp2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0
cmluZyYgZGF0YSkKK1JlZlB0cjxUZXh0PiBDREFUQVNlY3Rpb246OnZpcnR1YWxDcmVhdGUoY29u
c3QgU3RyaW5nJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQoKSwgZGF0YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmgKaW5kZXggN2U5ODIzZS4uZGU1MmYzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaApAQCAtMjksMTYgKzI5LDE2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ0RBVEFTZWN0aW9uIGZpbmFsIDogcHVibGljIFRleHQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENEQVRBU2VjdGlvbj4gY3JlYXRlKERvY3VtZW50
JiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZlB0cjxDREFUQVNlY3Rpb24+IGNyZWF0
ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIENEQVRBU2VjdGlv
bihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5h
bWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29s
IGRlZXApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29s
IGRlZXApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVU
eXBlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dD4gdmlydHVh
bENyZWF0ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxUZXh0
PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCmluZGV4IDk2MWU4ZjEuLmRlMmRmNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tbWVudC5jcHAKQEAgLTMxLDEyICszMSwxMiBAQCBpbmxpbmUgQ29tbWVu
dDo6Q29tbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKIH0K
IAotUGFzc1JlZlB0cjxDb21tZW50PiBDb21tZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIHRleHQpCitSZWZQdHI8Q29tbWVudD4gQ29tbWVudDo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ29tbWVudChkb2N1bWVudCwgdGV4dCkpOwogfQogCi1QYXNzUmVmUHRyPENvbW1l
bnQ+IENvbW1lbnQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHRleHQpCitSZWZQdHI8Q29tbWVudD4gQ29tbWVudDo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENvbW1lbnQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCB0ZXh0
KSk7CiB9CkBAIC01MSw3ICs1MSw3IEBAIE5vZGU6Ok5vZGVUeXBlIENvbW1lbnQ6Om5vZGVUeXBl
KCkgY29uc3QKICAgICByZXR1cm4gQ09NTUVOVF9OT0RFOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+
IENvbW1lbnQ6OmNsb25lTm9kZShib29sIC8qZGVlcCovKQorUmVmUHRyPE5vZGU+IENvbW1lbnQ6
OmNsb25lTm9kZShib29sIC8qZGVlcCovKQogewogICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQo
KSwgZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCmluZGV4IGMxYTQ5ZDUuLjU2NjhiZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbW1lbnQuaApAQCAtMjksMTUgKzI5LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29tbWVudCBmaW5hbCA6IHB1YmxpYyBDaGFyYWN0ZXJEYXRhIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb21tZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBT
dHJpbmcmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb21tZW50PiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBSZWZQdHI8Q29tbWVu
dD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZlB0cjxD
b21tZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYpOwog
CiBwcml2YXRlOgogICAgIENvbW1lbnQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKIAogICAg
IHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBO
b2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNGQ0YmVjNC4uM2Y2M2FhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtOTkzLDcgKzk5Myw3IEBAIFJlZlB0cjxOb2Rl
TGlzdD4gQ29udGFpbmVyTm9kZTo6cXVlcnlTZWxlY3RvckFsbChjb25zdCBTdHJpbmcmIHNlbGVj
dG9ycywgRXhjZXB0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IENvbnRhaW5lck5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxOYW1lKQorUmVmUHRyPE5vZGVMaXN0PiBDb250YWluZXJOb2RlOjpnZXRFbGVtZW50
c0J5VGFnTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAgICBpZiAobG9j
YWxOYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwMDMsNyArMTAwMyw3IEBA
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IENvbnRhaW5lck5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jCiAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5z
dXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVXaXRoQXRvbWljTmFtZTxUYWdOb2RlTGlzdD4oKnRoaXMs
IGxvY2FsTmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZUxpc3Q+IENvbnRhaW5lck5vZGU6Omdl
dEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQorUmVmUHRyPE5vZGVMaXN0PiBDb250YWluZXJO
b2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
VVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAgICBpZiAobG9jYWxOYW1l
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwMTQsMTcgKzEwMTQsMTcgQEAgUGFz
c1JlZlB0cjxOb2RlTGlzdD4gQ29udGFpbmVyTm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhj
b25zdCBBdG9taWNTdHJpbmcmIG4KICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVO
b2RlTGlzdHMoKS5hZGRDYWNoZVdpdGhRdWFsaWZpZWROYW1lKCp0aGlzLCBuYW1lc3BhY2VVUkku
aXNFbXB0eSgpID8gbnVsbEF0b20gOiBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7CiB9CiAKLVBh
c3NSZWZQdHI8Tm9kZUxpc3Q+IENvbnRhaW5lck5vZGU6OmdldEVsZW1lbnRzQnlOYW1lKGNvbnN0
IFN0cmluZyYgZWxlbWVudE5hbWUpCitSZWZQdHI8Tm9kZUxpc3Q+IENvbnRhaW5lck5vZGU6Omdl
dEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudE5hbWUpCiB7CiAgICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVXaXRoQXRvbWljTmFt
ZTxOYW1lTm9kZUxpc3Q+KCp0aGlzLCBlbGVtZW50TmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8Tm9k
ZUxpc3Q+IENvbnRhaW5lck5vZGU6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBjbGFzc05hbWVzKQorUmVmUHRyPE5vZGVMaXN0PiBDb250YWluZXJOb2RlOjpnZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lcykKIHsKICAg
ICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZVdpdGhB
dG9taWNOYW1lPENsYXNzTm9kZUxpc3Q+KCp0aGlzLCBjbGFzc05hbWVzKTsKIH0KIAotUGFzc1Jl
ZlB0cjxSYWRpb05vZGVMaXN0PiBDb250YWluZXJOb2RlOjpyYWRpb05vZGVMaXN0KGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSkKK1JlZlB0cjxSYWRpb05vZGVMaXN0PiBDb250YWluZXJOb2RlOjpy
YWRpb05vZGVMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShIVE1MTmFtZXM6OmZvcm1UYWcpIHx8IGhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmaWVs
ZHNldFRhZykpOwogICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygp
LmFkZENhY2hlV2l0aEF0b21pY05hbWU8UmFkaW9Ob2RlTGlzdD4oKnRoaXMsIG5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggNWUxODJmNy4uMDdkNzRiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0xMzQsMTEgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAg
RWxlbWVudCogcXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9u
Q29kZSYpOwogICAgIFJlZlB0cjxOb2RlTGlzdD4gcXVlcnlTZWxlY3RvckFsbChjb25zdCBTdHJp
bmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxOb2RlTGlz
dD4gZ2V0RWxlbWVudHNCeVRhZ05hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpOwotICAgIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudE5h
bWUpOwotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlDbGFzc05hbWUoY29u
c3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWVzKTsKLSAgICBQYXNzUmVmUHRyPFJhZGlvTm9kZUxp
c3Q+IHJhZGlvTm9kZUxpc3QoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgUmVmUHRyPE5vZGVM
aXN0PiBnZXRFbGVtZW50c0J5VGFnTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBSZWZQ
dHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKTsKKyAgICBSZWZQdHI8
Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudE5hbWUpOwor
ICAgIFJlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBBdG9taWNT
dHJpbmcmIGNsYXNzTmFtZXMpOworICAgIFJlZlB0cjxSYWRpb05vZGVMaXN0PiByYWRpb05vZGVM
aXN0KGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ29u
dGFpbmVyTm9kZShEb2N1bWVudCYsIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIp
OwpAQCAtMjYyLDcgKzI2Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBSZXR1cm5zIDAg
aWYgdGhlcmUgaXMgbm8gbmV4dCBOb2RlLgotICAgIFBhc3NSZWZQdHI8Tm9kZT4gbmV4dE5vZGUo
KQorICAgIFJlZlB0cjxOb2RlPiBuZXh0Tm9kZSgpCiAgICAgewogICAgICAgICBpZiAoTElLRUxZ
KCFoYXNTbmFwc2hvdCgpKSkgewogICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1
cnJlbnROb2RlLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
Y3BwCmluZGV4IDhjYjEyY2IuLjdiN2Q3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxl
bWVudGF0aW9uLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIGJvb2wgRE9NSW1wbGVtZW50YXRpb246
Omhhc0ZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPiBET01JbXBs
ZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFt
ZSwKK1JlZlB0cjxEb2N1bWVudFR5cGU+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dFR5cGUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLAogICAgIGNvbnN0IFN0cmluZyYgcHVi
bGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IFN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBET01JbXBsZW1l
bnRhdGlvbiogRE9NSW1wbGVtZW50YXRpb246OmdldEludGVyZmFjZShjb25zdCBTdHJpbmcmIC8q
ZmVhdHVyZSovKQogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50PiBET01J
bXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkks
CitSZWZQdHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25z
dCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwKICAgICBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUs
IERvY3VtZW50VHlwZSogZG9jdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRy
PERvY3VtZW50PiBkb2M7CkBAIC0yMzQsMTAgKzIzNCwxMCBAQCBQYXNzUmVmUHRyPERvY3VtZW50
PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3Bh
Y2VVUgogICAgIGlmIChkb2N1bWVudEVsZW1lbnQpCiAgICAgICAgIGRvYy0+YXBwZW5kQ2hpbGQo
ZG9jdW1lbnRFbGVtZW50LnJlbGVhc2UoKSk7CiAKLSAgICByZXR1cm4gZG9jLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gZG9jOwogfQogCi1QYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IERPTUltcGxl
bWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPENTU1N0eWxlU2hlZXQ+IERPTUltcGxl
bWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIC8vIEZJWE1FOiBUaXRsZSBzaG91bGQg
YmUgc2V0LgogICAgIC8vIEZJWE1FOiBNZWRpYSBjb3VsZCBoYXZlIHdyb25nIHN5bnRheCwgaW4g
d2hpY2ggY2FzZSB3ZSBzaG91bGQgZ2VuZXJhdGUgYW4gZXhjZXB0aW9uLgpAQCAtMjg4LDcgKzI4
OCw3IEBAIGJvb2wgRE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPEhUTUxEb2N1
bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcm
IHRpdGxlKQorUmVmUHRyPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhU
TUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIFJlZlB0cjxIVE1MRG9jdW1l
bnQ+IGQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAgICAgZC0+b3BlbigpOwpA
QCAtMjk2LDEwICsyOTYsMTAgQEAgUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVu
dGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXQKICAgICBpZiAoIXRp
dGxlLmlzTnVsbCgpKQogICAgICAgICBkLT5zZXRUaXRsZSh0aXRsZSk7CiAgICAgZC0+c2V0U2Vj
dXJpdHlPcmlnaW4obV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICByZXR1cm4gZC5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIGQ7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+IERPTUlt
cGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiB1cmwpCitSZWZQdHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9u
OjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgLy8gUGx1Z2lucyBjYW5ub3QgdGFrZSBIVE1MIGFuZCBYSFRNTCBm
cm9tIHVzLCBhbmQgd2UgZG9uJ3QgZXZlbiBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHBsdWdpbiBk
YXRhYmFzZSBmb3IgdGhvc2UuCiAgICAgaWYgKHR5cGUgPT0gInRleHQvaHRtbCIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCmluZGV4IDdjYTU4ZDUuLmJhZjIxOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5j
bHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDI2ICs0NiwyNSBAQCBjbGFz
cyBET01JbXBsZW1lbnRhdGlvbiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewogcHVibGljOgog
ICAgIGV4cGxpY2l0IERPTUltcGxlbWVudGF0aW9uKERvY3VtZW50Jik7CiAKLSAgICAKICAgICB2
b2lkIHJlZigpIHsgbV9kb2N1bWVudC5yZWYoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IG1fZG9j
dW1lbnQuZGVyZWYoKTsgfQogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9j
dW1lbnQ7IH0KIAogICAgIC8vIERPTSBtZXRob2RzICYgYXR0cmlidXRlcyBmb3IgRE9NSW1wbGVt
ZW50YXRpb24KICAgICBzdGF0aWMgYm9vbCBoYXNGZWF0dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVy
ZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKLSAgICBQYXNzUmVmUHRyPERvY3VtZW50VHlwZT4g
Y3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgU3Ry
aW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRUeXBlPiBjcmVhdGVEb2N1bWVudFR5
cGUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25zdCBTdHJpbmcmIHB1YmxpY0lkLCBj
b25zdCBTdHJpbmcmIHN5c3RlbUlkLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPERvY3Vt
ZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3Ry
aW5nJiBxdWFsaWZpZWROYW1lLCBEb2N1bWVudFR5cGUqLCBFeGNlcHRpb25Db2RlJik7CiAKICAg
ICBET01JbXBsZW1lbnRhdGlvbiogZ2V0SW50ZXJmYWNlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSk7
CiAKICAgICAvLyBGcm9tIHRoZSBET01JbXBsZW1lbnRhdGlvbkNTUyBpbnRlcmZhY2UKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBtZWRpYSwgRXhjZXB0aW9uQ29kZSYpOwogCiAg
ICAgLy8gRnJvbSB0aGUgSFRNTERPTUltcGxlbWVudGF0aW9uIGludGVyZmFjZQotICAgIFBhc3NS
ZWZQdHI8SFRNTERvY3VtZW50PiBjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRs
ZSk7CisgICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0
cmluZyYgdGl0bGUpOwogCiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWZQdHI8RG9j
dW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIEZyYW1lKiwgY29u
c3QgVVJMJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1hNTE1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29s
IGlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggMzc0ODNjZS4uMzFjMTc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC01NjUsNyArNTY1LDcgQEAgc3RhdGljIGJvb2wgaXNBdHRyaWJ1dGVPbkFsbE93bmVycyhjb25z
dCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUsIGNvbnMKIH0KICNlbmRpZgogCi1Q
YXNzUmVmUHRyPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpCitSZWZQdHI8RG9jdW1lbnQ+IERvY3VtZW50OjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50
ID0gYWRvcHRSZWYobmV3IERvY3VtZW50KG51bGxwdHIsIFVSTCgpKSk7CiAgICAgZG9jdW1lbnQt
PnNldFNlY3VyaXR5T3JpZ2luKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7CkBAIC04NDgsNyAr
ODQ4LDcgQEAgdm9pZCBEb2N1bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdl
JiBjaGFuZ2UpCiAgICAgY2xlYXJTdHlsZVJlc29sdmVyKCk7CiB9CiAKLVBhc3NSZWZQdHI8RWxl
bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVu
dChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
ICghaXNWYWxpZE5hbWUobmFtZSkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9F
UlI7CkBAIC04NjEsMjIgKzg2MSwyMiBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50Ojpj
cmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQwogICAgIHJl
dHVybiBjcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20sIG5hbWUsIG51bGxBdG9t
KSwgZmFsc2UpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERvY3VtZW50Ojpj
cmVhdGVEb2N1bWVudEZyYWdtZW50KCkKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVu
dDo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCiB7CiAgICAgcmV0dXJuIERvY3VtZW50RnJhZ21l
bnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKIH0KIAotUGFzc1JlZlB0cjxUZXh0PiBEb2N1bWVudDo6
Y3JlYXRlVGV4dE5vZGUoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmUHRyPFRleHQ+IERvY3VtZW50
OjpjcmVhdGVUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgcmV0dXJuIFRleHQ6
OmNyZWF0ZSgqdGhpcywgZGF0YSk7CiB9CiAKLVBhc3NSZWZQdHI8Q29tbWVudD4gRG9jdW1lbnQ6
OmNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmUHRyPENvbW1lbnQ+IERvY3Vt
ZW50OjpjcmVhdGVDb21tZW50KGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICByZXR1cm4gQ29t
bWVudDo6Y3JlYXRlKCp0aGlzLCBkYXRhKTsKIH0KIAotUGFzc1JlZlB0cjxDREFUQVNlY3Rpb24+
IERvY3VtZW50OjpjcmVhdGVDREFUQVNlY3Rpb24oY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRp
b25Db2RlJiBlYykKK1JlZlB0cjxDREFUQVNlY3Rpb24+IERvY3VtZW50OjpjcmVhdGVDREFUQVNl
Y3Rpb24oY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
aXNIVE1MRG9jdW1lbnQoKSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAt
ODg1LDcgKzg4NSw3IEBAIFBhc3NSZWZQdHI8Q0RBVEFTZWN0aW9uPiBEb2N1bWVudDo6Y3JlYXRl
Q0RBVEFTZWN0aW9uKGNvbnN0IFN0cmluZyYgZGF0YSwgRXhjZXB0CiAgICAgcmV0dXJuIENEQVRB
U2VjdGlvbjo6Y3JlYXRlKCp0aGlzLCBkYXRhKTsKIH0KIAotUGFzc1JlZlB0cjxQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24+IERvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29uc3Qg
U3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCitS
ZWZQdHI8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBEb2N1bWVudDo6Y3JlYXRlUHJvY2Vzc2luZ0lu
c3RydWN0aW9uKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRhdGEsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmICghaXNWYWxpZE5hbWUodGFyZ2V0KSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKQEAgLTg5OCw3ICs4OTgsNyBAQCBQYXNzUmVm
UHRyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gRG9jdW1lbnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0
cnVjdGlvbihjb25zdCBTdAogICAgIHJldHVybiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNyZWF0
ZSgqdGhpcywgdGFyZ2V0LCBkYXRhKTsKIH0KIAotUGFzc1JlZlB0cjxFbnRpdHlSZWZlcmVuY2U+
IERvY3VtZW50OjpjcmVhdGVFbnRpdHlSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNl
cHRpb25Db2RlJiBlYykKK1JlZlB0cjxFbnRpdHlSZWZlcmVuY2U+IERvY3VtZW50OjpjcmVhdGVF
bnRpdHlSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBpZiAoIWlzVmFsaWROYW1lKG5hbWUpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9DSEFS
QUNURVJfRVJSOwpAQCAtOTExLDE4ICs5MTEsMTggQEAgUGFzc1JlZlB0cjxFbnRpdHlSZWZlcmVu
Y2U+IERvY3VtZW50OjpjcmVhdGVFbnRpdHlSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBuYW1lLAog
ICAgIHJldHVybiBFbnRpdHlSZWZlcmVuY2U6OmNyZWF0ZSgqdGhpcywgbmFtZSk7CiB9CiAKLVBh
c3NSZWZQdHI8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb25zdCBTdHJp
bmcmIHRleHQpCitSZWZQdHI8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShj
b25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgcmV0dXJuIFRleHQ6OmNyZWF0ZUVkaXRpbmdUZXh0
KCp0aGlzLCB0ZXh0KTsKIH0KIAotUGFzc1JlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBEb2N1
bWVudDo6Y3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbigpCitSZWZQdHI8Q1NTU3R5bGVEZWNsYXJh
dGlvbj4gRG9jdW1lbnQ6OmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKQogewogICAgIFJlZjxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0eVNldChNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
OjpjcmVhdGUoKSk7CiAgICAgcmV0dXJuIHByb3BlcnR5U2V0LT5lbnN1cmVDU1NTdHlsZURlY2xh
cmF0aW9uKCk7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmltcG9ydE5vZGUoTm9k
ZSogaW1wb3J0ZWROb2RlLCBib29sIGRlZXAsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPE5v
ZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7CiAgICAgCkBAIC0xMDA0LDcgKzEwMDQs
NyBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVk
Tm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogfQogCiAKLVBhc3NSZWZQdHI8Tm9kZT4gRG9j
dW1lbnQ6OmFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNv
dXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFzb3VyY2UpIHsKICAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTEwODAsNyArMTA4MCw3IEBAIGJvb2wgRG9jdW1l
bnQ6Omhhc1ZhbGlkTmFtZXNwYWNlRm9yQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBx
TmFtZSkKIH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBpbiBhIHBvc3NpYmxl
IEVsZW1lbnRGYWN0b3J5IGNsYXNzLgotUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3Jl
YXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBib29sIGNyZWF0ZWRCeVBhcnNl
cikKK1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAgICBSZWZQdHI8RWxlbWVu
dD4gZWxlbWVudDsKIApAQCAtMTExNyw3ICsxMTE3LDcgQEAgYm9vbCBEb2N1bWVudDo6Y3NzQ29t
cG9zaXRpbmdFbmFibGVkKCkgY29uc3QKIAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKIAotUGFz
c1JlZlB0cjxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiBEb2N1bWVudDo6d2Via2l0R2V0TmFtZWRG
bG93cygpCitSZWZQdHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OndlYmtpdEdl
dE5hbWVkRmxvd3MoKQogewogICAgIGlmICghY3NzUmVnaW9uc0VuYWJsZWQoKSB8fCAhcmVuZGVy
VmlldygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExMzcsNyArMTEzNyw3IEBAIE5h
bWVkRmxvd0NvbGxlY3Rpb24mIERvY3VtZW50OjpuYW1lZEZsb3dzKCkKICAgICByZXR1cm4gKm1f
bmFtZWRGbG93czsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxl
bWVudE5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmll
ZE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVh
dGVFbGVtZW50TlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVh
bGlmaWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgU3RyaW5nIHByZWZpeCwgbG9j
YWxOYW1lOwogICAgIGlmICghcGFyc2VRdWFsaWZpZWROYW1lKHF1YWxpZmllZE5hbWUsIHByZWZp
eCwgbG9jYWxOYW1lLCBlYykpCkBAIC0xNDI1LDEyICsxNDI1LDEyIEBAIEVsZW1lbnQqIERvY3Vt
ZW50OjplbGVtZW50RnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCkKICAg
ICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CiB9CiAKLVBhc3NSZWZQdHI8UmFuZ2U+
IERvY3VtZW50OjpjYXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSkKK1JlZlB0cjxSYW5n
ZT4gRG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KQogewogICAgIHJl
dHVybiBjYXJldFJhbmdlRnJvbVBvaW50KExheW91dFBvaW50KHgsIHkpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxSYW5nZT4gRG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmIGNsaWVudFBvaW50KQorUmVmUHRyPFJhbmdlPiBEb2N1bWVudDo6Y2FyZXRSYW5nZUZyb21Q
b2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQpCiB7CiAgICAgaWYgKCFoYXNMaXZp
bmdSZW5kZXJUcmVlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTY4MSwxMiArMTY4
MSwxMiBAQCBTZXR0aW5ncyogRG9jdW1lbnQ6OnNldHRpbmdzKCkgY29uc3QKICAgICByZXR1cm4g
bV9mcmFtZSA/ICZtX2ZyYW1lLT5zZXR0aW5ncygpIDogbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0
cjxSYW5nZT4gRG9jdW1lbnQ6OmNyZWF0ZVJhbmdlKCkKK1JlZlB0cjxSYW5nZT4gRG9jdW1lbnQ6
OmNyZWF0ZVJhbmdlKCkKIHsKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZSgqdGhpcyk7CiB9CiAK
LVBhc3NSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBEb2N1bWVudDo6Y3JlYXRlTm9kZUl0ZXJhdG9yKE5v
ZGUqIHJvb3QsIHVuc2lnbmVkIHdoYXRUb1Nob3csIAorUmVmUHRyPE5vZGVJdGVyYXRvcj4gRG9j
dW1lbnQ6OmNyZWF0ZU5vZGVJdGVyYXRvcihOb2RlKiByb290LCB1bnNpZ25lZCB3aGF0VG9TaG93
LCAKICAgICBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IGZpbHRlciwgYm9vbCBleHBhbmRFbnRpdHlS
ZWZlcmVuY2VzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIXJvb3QpIHsKQEAgLTE2
OTYsNyArMTY5Niw3IEBAIFBhc3NSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBEb2N1bWVudDo6Y3JlYXRl
Tm9kZUl0ZXJhdG9yKE5vZGUqIHJvb3QsIHVuc2lnbmVkIHdoYXRUCiAgICAgcmV0dXJuIE5vZGVJ
dGVyYXRvcjo6Y3JlYXRlKHJvb3QsIHdoYXRUb1Nob3csIGZpbHRlciwgZXhwYW5kRW50aXR5UmVm
ZXJlbmNlcyk7CiB9CiAKLVBhc3NSZWZQdHI8VHJlZVdhbGtlcj4gRG9jdW1lbnQ6OmNyZWF0ZVRy
ZWVXYWxrZXIoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFRvU2hvdywgCitSZWZQdHI8VHJlZVdh
bGtlcj4gRG9jdW1lbnQ6OmNyZWF0ZVRyZWVXYWxrZXIoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hh
dFRvU2hvdywgCiAgICAgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiBmaWx0ZXIsIGJvb2wgZXhwYW5k
RW50aXR5UmVmZXJlbmNlcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFyb290KSB7
CkBAIC0yMjQzLDcgKzIyNDMsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRWaXN1YWxseU9yZGVyZWQo
KQogICAgICAgICByZW5kZXJWaWV3KCktPnN0eWxlKCkuc2V0UlRMT3JkZXJpbmcoVmlzdWFsT3Jk
ZXIpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBEb2N1bWVudDo6Y3JlYXRlUGFy
c2VyKCkKK1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7
CiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IHBhc3MgdGhlIGZyYW1lIGluc3Rl
YWQKICAgICByZXR1cm4gWE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSgqdGhpcywgdmlldygpKTsK
QEAgLTMxODksMTYgKzMxODksMTYgQEAgYm9vbCBEb2N1bWVudDo6Y2FuUmVwbGFjZUNoaWxkKE5v
ZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFz
c1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6Y2xvbmVOb2RlKGJvb2wgZGVlcCkKK1JlZlB0cjxOb2Rl
PiBEb2N1bWVudDo6Y2xvbmVOb2RlKGJvb2wgZGVlcCkKIHsKICAgICBSZWZQdHI8RG9jdW1lbnQ+
IGNsb25lID0gY2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbigpOwogICAgIGNsb25lLT5jbG9u
ZURhdGFGcm9tRG9jdW1lbnQoKnRoaXMpOwogICAgIGlmIChkZWVwKQogICAgICAgICBjbG9uZUNo
aWxkTm9kZXMoY2xvbmUuZ2V0KCkpOwotICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGNsb25lOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50PiBEb2N1bWVudDo6Y2xvbmVE
b2N1bWVudFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0CitSZWZQdHI8RG9jdW1lbnQ+IERvY3VtZW50
OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNY
SFRNTERvY3VtZW50KCkgPyBjcmVhdGVYSFRNTChudWxscHRyLCB1cmwoKSkgOiBjcmVhdGUobnVs
bHB0ciwgdXJsKCkpOwogfQpAQCAtMzgxOSw3ICszODE5LDcgQEAgdm9pZCBEb2N1bWVudDo6ZW5x
dWV1ZU92ZXJmbG93RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgbV9ldmVudFF1
ZXVlLmVucXVldWVFdmVudChldmVudCk7CiB9CiAKLVBhc3NSZWZQdHI8RXZlbnQ+IERvY3VtZW50
OjpjcmVhdGVFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CitSZWZQdHI8RXZlbnQ+IERvY3VtZW50OjpjcmVhdGVFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50
VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2
ZW50RmFjdG9yeTo6Y3JlYXRlKGV2ZW50VHlwZSk7CiAgICAgaWYgKGV2ZW50KQpAQCAtNDQ4Niwx
MiArNDQ4NiwxMiBAQCBEb2N1bWVudCYgRG9jdW1lbnQ6OnRvcERvY3VtZW50KCkgY29uc3QKICAg
ICByZXR1cm4gKmRvY3VtZW50OwogfQogCi1QYXNzUmVmUHRyPEF0dHI+IERvY3VtZW50OjpjcmVh
dGVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0
cjxBdHRyPiBEb2N1bWVudDo6Y3JlYXRlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUF0dHJpYnV0ZU5TKFN0cmluZygp
LCBuYW1lLCBlYywgdHJ1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8QXR0cj4gRG9jdW1lbnQ6OmNyZWF0
ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1
YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBib29sIHNob3VsZElnbm9yZU5hbWVzcGFj
ZUNoZWNrcykKK1JlZlB0cjxBdHRyPiBEb2N1bWVudDo6Y3JlYXRlQXR0cmlidXRlTlMoY29uc3Qg
U3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMsIGJvb2wgc2hvdWxkSWdub3JlTmFtZXNwYWNlQ2hlY2tzKQogewogICAgIFN0
cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKICAgICBpZiAoIXBhcnNlUXVhbGlmaWVkTmFtZShxdWFs
aWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpKQpAQCAtNDUyNCw2MyArNDUyNCw2MyBA
QCBib29sIERvY3VtZW50OjpoYXNTVkdSb290Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3Vt
ZW50RWxlbWVudCgpICYmIGRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpz
dmdUYWcpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW5zdXJl
Q2FjaGVkQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSB0eXBlKQorUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiBEb2N1bWVudDo6ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSB0eXBl
KQogewogICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENh
Y2hlZENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb24+KCp0aGlzLCB0eXBlKTsKIH0KIAotUGFzc1Jl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmltYWdlcygpCitSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+IERvY3VtZW50OjppbWFnZXMoKQogewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xs
ZWN0aW9uKERvY0ltYWdlcyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3Vt
ZW50OjphcHBsZXRzKCkKK1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFwcGxldHMo
KQogewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY0FwcGxldHMpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW1iZWRzKCkKK1JlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmVtYmVkcygpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZENvbGxlY3Rpb24oRG9jRW1iZWRzKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlv
bj4gRG9jdW1lbnQ6OnBsdWdpbnMoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6
cGx1Z2lucygpCiB7CiAgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgZW1iZWRzKCkgcmVxdWly
ZWQgZm9yIHRoZSBKUyBET00gYmluZGluZ3MuCiAgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxl
Y3Rpb24oRG9jRW1iZWRzKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1l
bnQ6OnNjcmlwdHMoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6c2NyaXB0cygp
CiB7CiAgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jU2NyaXB0cyk7CiB9CiAK
LVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpsaW5rcygpCitSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IERvY3VtZW50OjpsaW5rcygpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNhY2hl
ZENvbGxlY3Rpb24oRG9jTGlua3MpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBE
b2N1bWVudDo6Zm9ybXMoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6Zm9ybXMo
KQogewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY0Zvcm1zKTsKIH0KIAot
UGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFuY2hvcnMoKQorUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YW5jaG9ycygpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZENvbGxlY3Rpb24oRG9jQW5jaG9ycyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IERvY3VtZW50OjphbGwoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YWxs
KCkKIHsKICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRD
YWNoZWRDb2xsZWN0aW9uPEhUTUxBbGxDb2xsZWN0aW9uPigqdGhpcywgRG9jQWxsKTsKIH0KIAot
UGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OndpbmRvd05hbWVkSXRlbXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6
d2luZG93TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxX
aW5kb3dOYW1lQ29sbGVjdGlvbj4oKnRoaXMsIFdpbmRvd05hbWVkSXRlbXMsIG5hbWUpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZG9jdW1lbnROYW1lZEl0ZW1z
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1l
bnQ6OmRvY3VtZW50TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAg
cmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVj
dGlvbjxEb2N1bWVudE5hbWVDb2xsZWN0aW9uPigqdGhpcywgRG9jdW1lbnROYW1lZEl0ZW1zLCBu
YW1lKTsKIH0KQEAgLTQ2NTMsNyArNDY1Myw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzVGVsZXBob25l
TnVtYmVyUGFyc2luZ0FsbG93ZWQoKSBjb25zdAogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8WFBh
dGhFeHByZXNzaW9uPiBEb2N1bWVudDo6Y3JlYXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sCitSZWZQdHI8WFBhdGhFeHByZXNzaW9uPiBEb2N1bWVudDo6Y3JlYXRlRXhwcmVz
c2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
eGNlcHRpb25Db2RlJiBlYykKIHsKQEAgLTQ2NjIsMTQgKzQ2NjIsMTQgQEAgUGFzc1JlZlB0cjxY
UGF0aEV4cHJlc3Npb24+IERvY3VtZW50OjpjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwKICAgICByZXR1cm4gbV94cGF0aEV2YWx1YXRvci0+Y3JlYXRlRXhwcmVzc2lv
bihleHByZXNzaW9uLCByZXNvbHZlciwgZWMpOwogfQogCi1QYXNzUmVmUHRyPFhQYXRoTlNSZXNv
bHZlcj4gRG9jdW1lbnQ6OmNyZWF0ZU5TUmVzb2x2ZXIoTm9kZSogbm9kZVJlc29sdmVyKQorUmVm
UHRyPFhQYXRoTlNSZXNvbHZlcj4gRG9jdW1lbnQ6OmNyZWF0ZU5TUmVzb2x2ZXIoTm9kZSogbm9k
ZVJlc29sdmVyKQogewogICAgIGlmICghbV94cGF0aEV2YWx1YXRvcikKICAgICAgICAgbV94cGF0
aEV2YWx1YXRvciA9IFhQYXRoRXZhbHVhdG9yOjpjcmVhdGUoKTsKICAgICByZXR1cm4gbV94cGF0
aEV2YWx1YXRvci0+Y3JlYXRlTlNSZXNvbHZlcihub2RlUmVzb2x2ZXIpOwogfQogCi1QYXNzUmVm
UHRyPFhQYXRoUmVzdWx0PiBEb2N1bWVudDo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLAorUmVmUHRyPFhQYXRoUmVzdWx0PiBEb2N1bWVudDo6ZXZhbHVhdGUoY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5vZGUqIGNvbnRleHROb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZSwKQEAgLTUxMjIsNyArNTEy
Miw3IEBAIFN0cmluZyBEb2N1bWVudDo6ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhj
b25zdCBTdHJpbmcmIHN0cikgY29uc3QKICAgICByZXR1cm4gc3RyOwogfQogCi1QYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IERvY3VtZW50OjpkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyKSBjb25zdAorUmVmUHRyPFN0cmluZ0ltcGw+IERvY3Vt
ZW50OjpkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gc3RyKSBjb25zdAogewogICAgIGlmIChtX2RlY29kZXIpCiAgICAgICAgIHJldHVybiBtX2Rl
Y29kZXItPmVuY29kaW5nKCkuZGlzcGxheVN0cmluZyhzdHIpOwpAQCAtNTgxNyw3ICs1ODE3LDcg
QEAgdm9pZCBEb2N1bWVudDo6c2VuZFdpbGxSZXZlYWxFZGdlRXZlbnRzSWZOZWVkZWQoY29uc3Qg
SW50UG9pbnQmIG9sZFBvc2l0aW9uLCBjb24KIAogI2lmICFQTEFURk9STShJT1MpCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKLVBhc3NSZWZQdHI8VG91Y2g+IERvY3VtZW50OjpjcmVhdGVUb3Vj
aChET01XaW5kb3cqIHdpbmRvdywgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGlkZW50aWZpZXIs
IGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRp
dXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UsIEV4Y2Vw
dGlvbkNvZGUmKSBjb25zdAorUmVmUHRyPFRvdWNoPiBEb2N1bWVudDo6Y3JlYXRlVG91Y2goRE9N
V2luZG93KiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBpZGVudGlmaWVyLCBpbnQg
cGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwg
aW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlLCBFeGNlcHRpb25D
b2RlJikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgZnJvbSB0aGUgZG9j
dW1lbnRhdGlvbiBhdAogICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkv
c2FmYXJpLyNkb2N1bWVudGF0aW9uL1VzZXJFeHBlcmllbmNlL1JlZmVyZW5jZS9Eb2N1bWVudEFk
ZGl0aW9uc1JlZmVyZW5jZS9Eb2N1bWVudEFkZGl0aW9ucy9Eb2N1bWVudEFkZGl0aW9ucy5odG1s
CkBAIC02MTg4LDcgKzYxODgsNyBAQCBEb2N1bWVudCYgRG9jdW1lbnQ6OmVuc3VyZVRlbXBsYXRl
RG9jdW1lbnQoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLVBhc3NS
ZWZQdHI8Rm9udExvYWRlcj4gRG9jdW1lbnQ6OmZvbnRzKCkKK1JlZlB0cjxGb250TG9hZGVyPiBE
b2N1bWVudDo6Zm9udHMoKQogewogICAgIGlmICghbV9mb250bG9hZGVyKQogICAgICAgICBtX2Zv
bnRsb2FkZXIgPSBGb250TG9hZGVyOjpjcmVhdGUodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDI2MDk2NzAuLjgyY2YzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0yNTcsMTkgKzI1
NywxOSBAQCBlbnVtIGNsYXNzIERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGUgOiB1bnNpZ25lZCBj
aGFyIHsKIAogY2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSwgcHVibGljIFRy
ZWVTY29wZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCkKKyAgICBzdGF0aWMgUmVmUHRyPERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRG9jdW1l
bnQoZnJhbWUsIHVybCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4g
Y3JlYXRlWEhUTUwoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVm
UHRyPERvY3VtZW50PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEb2N1bWVudChmcmFtZSwgdXJsLCBY
SFRNTERvY3VtZW50Q2xhc3MpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1l
bnQ+IGNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCkKKyAgICBzdGF0aWMgUmVmUHRyPERvY3VtZW50PiBjcmVhdGVOb25SZW5kZXJlZFBsYWNl
aG9sZGVyKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IERvY3VtZW50KGZyYW1lLCB1cmwsIERlZmF1bHREb2N1bWVudENsYXNz
LCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERvY3VtZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHN0YXRpYyBS
ZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICB2
aXJ0dWFsIH5Eb2N1bWVudCgpOwogCkBAIC00MjEsMjQgKzQyMSwyNCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGhhc01hbmlmZXN0KCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1Jl
ZlB0cjxUZXh0PiBjcmVhdGVUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEpOwotICAgIFBhc3NS
ZWZQdHI8Q29tbWVudD4gY3JlYXRlQ29tbWVudChjb25zdCBTdHJpbmcmIGRhdGEpOwotICAgIFBh
c3NSZWZQdHI8Q0RBVEFTZWN0aW9uPiBjcmVhdGVDREFUQVNlY3Rpb24oY29uc3QgU3RyaW5nJiBk
YXRhLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24+IGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihjb25zdCBTdHJpbmcmIHRhcmdldCwgY29u
c3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxBdHRyPiBj
cmVhdGVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
UGFzc1JlZlB0cjxBdHRyPiBjcmVhdGVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFj
ZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiwgYm9vbCBz
aG91bGRJZ25vcmVOYW1lc3BhY2VDaGVja3MgPSBmYWxzZSk7Ci0gICAgUGFzc1JlZlB0cjxFbnRp
dHlSZWZlcmVuY2U+IGNyZWF0ZUVudGl0eVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPE5vZGU+IGltcG9ydE5vZGUoTm9kZSogaW1w
b3J0ZWROb2RlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gaW1wb3J0Tm9kZShpbXBvcnRl
ZE5vZGUsIHRydWUsIGVjKTsgfQotICAgIFBhc3NSZWZQdHI8Tm9kZT4gaW1wb3J0Tm9kZShOb2Rl
KiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudE5TKGNvbnN0IFN0cmluZyYg
bmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFt
ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFRleHQ+IGNyZWF0ZVRleHROb2RlKGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgUmVmUHRy
PENvbW1lbnQ+IGNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICBSZWZQdHI8
Q0RBVEFTZWN0aW9uPiBjcmVhdGVDREFUQVNlY3Rpb24oY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNl
cHRpb25Db2RlJik7CisgICAgUmVmUHRyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gY3JlYXRlUHJv
Y2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRh
dGEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8QXR0cj4gY3JlYXRlQXR0cmlidXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxBdHRyPiBjcmVh
dGVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBx
dWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiwgYm9vbCBzaG91bGRJZ25vcmVOYW1lc3BhY2VD
aGVja3MgPSBmYWxzZSk7CisgICAgUmVmUHRyPEVudGl0eVJlZmVyZW5jZT4gY3JlYXRlRW50aXR5
UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0
cjxOb2RlPiBpbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMp
IHsgcmV0dXJuIGltcG9ydE5vZGUoaW1wb3J0ZWROb2RlLCB0cnVlLCBlYyk7IH0KKyAgICBSZWZQ
dHI8Tm9kZT4gaW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVt
ZW50TlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVk
TmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxFbGVtZW50
PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBib29sIGNyZWF0ZWRCeVBhcnNl
cik7CiAKICAgICBib29sIGNzc1JlZ2lvbnNFbmFibGVkKCkgY29uc3Q7CiAgICAgYm9vbCBjc3ND
b21wb3NpdGluZ0VuYWJsZWQoKSBjb25zdDsKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAg
UGFzc1JlZlB0cjxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiB3ZWJraXRHZXROYW1lZEZsb3dzKCk7
CisgICAgUmVmUHRyPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IHdlYmtpdEdldE5hbWVkRmxvd3Mo
KTsKICNlbmRpZgogCiAgICAgTmFtZWRGbG93Q29sbGVjdGlvbiYgbmFtZWRGbG93cygpOwpAQCAt
NDQ2LDggKzQ0Niw4IEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50KGlu
dCB4LCBpbnQgeSkgeyByZXR1cm4gZWxlbWVudEZyb21Qb2ludChMYXlvdXRQb2ludCh4LCB5KSk7
IH0KICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGll
bnRQb2ludCk7CiAKLSAgICBQYXNzUmVmUHRyPFJhbmdlPiBjYXJldFJhbmdlRnJvbVBvaW50KGlu
dCB4LCBpbnQgeSk7Ci0gICAgUGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5nZUZyb21Qb2ludChj
b25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQpOworICAgIFJlZlB0cjxSYW5nZT4gY2FyZXRS
YW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkpOworICAgIFJlZlB0cjxSYW5nZT4gY2FyZXRSYW5n
ZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQpOwogCiAgICAgU3RyaW5n
IHJlYWR5U3RhdGUoKSBjb25zdDsKIApAQCAtNDk4LDIwICs0OTgsMjAgQEAgcHVibGljOgogICAg
IERPTVNlY3VyaXR5UG9saWN5JiBzZWN1cml0eVBvbGljeSgpOwogI2VuZGlmCiAKLSAgICBQYXNz
UmVmUHRyPE5vZGU+IGFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9u
Q29kZSYpOworICAgIFJlZlB0cjxOb2RlPiBhZG9wdE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3Vy
Y2UsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGlt
YWdlcygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGVtYmVkcygpOwotICAgIFBh
c3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHBsdWdpbnMoKTsgLy8gYW4gYWxpYXMgZm9yIGVtYmVk
cygpIHJlcXVpcmVkIGZvciB0aGUgSlMgRE9NIGJpbmRpbmdzLgotICAgIFBhc3NSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IGFwcGxldHMoKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBs
aW5rcygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGZvcm1zKCk7Ci0gICAgUGFz
c1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gYW5jaG9ycygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IHNjcmlwdHMoKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBhbGwo
KTsKKyAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGltYWdlcygpOworICAgIFJlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gZW1iZWRzKCk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBwbHVnaW5z
KCk7IC8vIGFuIGFsaWFzIGZvciBlbWJlZHMoKSByZXF1aXJlZCBmb3IgdGhlIEpTIERPTSBiaW5k
aW5ncy4KKyAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGFwcGxldHMoKTsKKyAgICBSZWZQdHI8
SFRNTENvbGxlY3Rpb24+IGxpbmtzKCk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBmb3Jt
cygpOworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gYW5jaG9ycygpOworICAgIFJlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gc2NyaXB0cygpOworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gYWxs
KCk7CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB3aW5kb3dOYW1lZEl0ZW1zKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4g
ZG9jdW1lbnROYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPiB3aW5kb3dOYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBkb2N1bWVudE5hbWVkSXRlbXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKTsKIAogICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9m
IERPTSkKICAgICBib29sIGlzU3ludGhlc2l6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3ludGhl
c2l6ZWQ7IH0KQEAgLTU3OSwxNyArNTc5LDE3IEBAIHB1YmxpYzoKIAogICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJh
bmdlPiBjcmVhdGVSYW5nZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gY3Jl
YXRlUmFuZ2UoKTsKIAotICAgIFBhc3NSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBjcmVhdGVOb2RlSXRl
cmF0b3IoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFRvU2hvdywKKyAgICBSZWZQdHI8Tm9kZUl0
ZXJhdG9yPiBjcmVhdGVOb2RlSXRlcmF0b3IoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFRvU2hv
dywKICAgICAgICAgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiwgYm9vbCBleHBhbmRFbnRpdHlSZWZl
cmVuY2VzLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPFRyZWVXYWxrZXI+IGNy
ZWF0ZVRyZWVXYWxrZXIoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFRvU2hvdywKKyAgICBSZWZQ
dHI8VHJlZVdhbGtlcj4gY3JlYXRlVHJlZVdhbGtlcihOb2RlKiByb290LCB1bnNpZ25lZCB3aGF0
VG9TaG93LAogICAgICAgICBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+LCBib29sIGV4cGFuZEVudGl0
eVJlZmVyZW5jZXMsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIC8vIFNwZWNpYWwgc3VwcG9ydCBm
b3IgZWRpdGluZwotICAgIFBhc3NSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gY3JlYXRlQ1NT
U3R5bGVEZWNsYXJhdGlvbigpOwotICAgIFBhc3NSZWZQdHI8VGV4dD4gY3JlYXRlRWRpdGluZ1Rl
eHROb2RlKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBj
cmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CisgICAgUmVmUHRyPFRleHQ+IGNyZWF0ZUVkaXRp
bmdUZXh0Tm9kZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGU6
OkNoYW5nZSA9IFN0eWxlOjpOb0NoYW5nZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CkBAIC02ODcsNyArNjg3LDcgQEAgcHVibGljOgogCiAgICAgQ1NT
U3R5bGVTaGVldCYgZWxlbWVudFNoZWV0KCk7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxEb2N1
bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiAgICAgRG9jdW1lbnRQYXJzZXIqIHBhcnNlcigp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9CiAgICAgU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyKiBzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSBjb25zdDsKICAgICAKQEAgLTgxOCw3
ICs4MTgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFdpbmRv
d0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiA9IDApOwog
ICAgIHZvaWQgZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQoKTsKIAotICAgIFBhc3NSZWZQdHI8RXZl
bnQ+IGNyZWF0ZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlLCBFeGNlcHRpb25Db2RlJik7
CisgICAgUmVmUHRyPEV2ZW50PiBjcmVhdGVFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSwg
RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8ga2VlcCB0cmFjayBvZiB3aGF0IHR5cGVzIG9mIGV2
ZW50IGxpc3RlbmVycyBhcmUgcmVnaXN0ZXJlZCwgc28gd2UgZG9uJ3QKICAgICAvLyBkaXNwYXRj
aCBldmVudHMgdW5uZWNlc3NhcmlseQpAQCAtOTcyLDcgKzk3Miw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShYU0xUKQogICAgIHZvaWQgYXBwbHlYU0xUcmFuc2Zvcm0oUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKiBwaSk7Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVudD4gdHJhbnNmb3JtU291cmNlRG9j
dW1lbnQoKSB7IHJldHVybiBtX3RyYW5zZm9ybVNvdXJjZURvY3VtZW50OyB9CisgICAgUmVmUHRy
PERvY3VtZW50PiB0cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpIHsgcmV0dXJuIG1fdHJhbnNmb3Jt
U291cmNlRG9jdW1lbnQ7IH0KICAgICB2b2lkIHNldFRyYW5zZm9ybVNvdXJjZURvY3VtZW50KERv
Y3VtZW50KiBkb2MpIHsgbV90cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCA9IGRvYzsgfQogCiAgICAg
dm9pZCBzZXRUcmFuc2Zvcm1Tb3VyY2Uoc3RkOjp1bmlxdWVfcHRyPFRyYW5zZm9ybVNvdXJjZT4p
OwpAQCAtOTgzLDE2ICs5ODMsMTYgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IGRvbVRyZWVWZXJz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kb21UcmVlVmVyc2lvbjsgfQogCiAgICAgLy8gWFBhdGhF
dmFsdWF0b3IgbWV0aG9kcwotICAgIFBhc3NSZWZQdHI8WFBhdGhFeHByZXNzaW9uPiBjcmVhdGVF
eHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aE5TUmVzb2x2ZXIqIHJlc29sdmVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUmIGVjKTsKLSAgICBQYXNzUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4gY3JlYXRlTlNSZXNv
bHZlcihOb2RlICpub2RlUmVzb2x2ZXIpOwotICAgIFBhc3NSZWZQdHI8WFBhdGhSZXN1bHQ+IGV2
YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBjb250ZXh0Tm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBYUGF0aE5TUmVzb2x2ZXIqIHJlc29sdmVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGhSZXN1bHQqIHJlc3VsdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgUmVmUHRy
PFhQYXRoRXhwcmVzc2lvbj4gY3JlYXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aE5T
UmVzb2x2ZXIqIHJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRXhjZXB0aW9uQ29kZSYgZWMpOworICAgIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+
IGNyZWF0ZU5TUmVzb2x2ZXIoTm9kZSAqbm9kZVJlc29sdmVyKTsKKyAgICBSZWZQdHI8WFBhdGhS
ZXN1bHQ+IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGNvbnRleHROb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBYUGF0aFJlc3VsdCogcmVzdWx0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSYgZWMpOwogCiAgICAgZW51bSBQZW5kaW5nU2hl
ZXRMYXlvdXQgeyBOb0xheW91dFdpdGhQZW5kaW5nU2hlZXRzLCBEaWRMYXlvdXRXaXRoUGVuZGlu
Z1NoZWV0cywgSWdub3JlTGF5b3V0V2l0aFBlbmRpbmdTaGVldHMgfTsKIApAQCAtMTA2OCw3ICsx
MDY4LDcgQEAgcHVibGljOgogICAgIFRleHRSZXNvdXJjZURlY29kZXIqIGRlY29kZXIoKSBjb25z
dCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0Owot
ICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGlu
ZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KSBjb25zdDsKKyAgICBSZWZQdHI8U3RyaW5nSW1wbD4g
ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KSBj
b25zdDsKICAgICB2b2lkIGRpc3BsYXlCdWZmZXJNb2RpZmllZEJ5RW5jb2RpbmcoTENoYXIqIGJ1
ZmZlciwgdW5zaWduZWQgbGVuKSBjb25zdAogICAgIHsKICAgICAgICAgZGlzcGxheUJ1ZmZlck1v
ZGlmaWVkQnlFbmNvZGluZ0ludGVybmFsKGJ1ZmZlciwgbGVuKTsKQEAgLTEyNjksNyArMTI2OSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4oKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIFBh
c3NSZWZQdHI8Rm9udExvYWRlcj4gZm9udHMoKTsKKyAgICBSZWZQdHI8Rm9udExvYWRlcj4gZm9u
dHMoKTsKICNlbmRpZgogCiAgICAgdm9pZCBlbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQoRE9N
V3JhcHBlcldvcmxkJik7CkBAIC0xMjk3LDcgKzEyOTcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2
b2lkIGNsZWFyWE1MVmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3RyaW5nKCk7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudD4gY2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJl
bigpIGNvbnN0OworICAgIHZpcnR1YWwgUmVmUHRyPERvY3VtZW50PiBjbG9uZURvY3VtZW50V2l0
aG91dENoaWxkcmVuKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE5vZGU7
CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVO
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxv
d2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVh
bCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgb3ZlcnJpZGUgZmluYWw7CiAgICAg
dm9pZCBjbG9uZURhdGFGcm9tRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKIAogICAgIHZpcnR1
YWwgdm9pZCByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgb3ZlcnJpZGUgZmluYWwgeyByZWYo
KTsgfQpAQCAtMTM1Miw3ICsxMzUyLDcgQEAgcHJpdmF0ZToKIAogICAgIE5vZGUqIG5vZGVGcm9t
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50LCBMYXlvdXRQb2ludCogbG9jYWxQ
b2ludCA9IG51bGxwdHIpOwogCi0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZW5zdXJl
Q2FjaGVkQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlKTsKIAogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKICAgICB2b2lkIGRpc3BhdGNoRnVsbFNjcmVlbkNoYW5nZU9yRXJy
b3JFdmVudChEZXF1ZTxSZWZQdHI8Tm9kZT4+JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5h
bWUsIGJvb2wgc2hvdWxkTm90aWZ5TWVkaWFFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudEZyYWdtZW50LmNwcAppbmRleCA2N2VjYjE3Li44YWY0NzUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAgRG9jdW1lbnRGcmFn
bWVudDo6RG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5
cGUgY29uc3RydWMKIHsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVu
dEZyYWdtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBOb2RlOjpD
cmVhdGVEb2N1bWVudEZyYWdtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpCitSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEb2N1bWVudEZyYWdtZW50KGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgTm9kZTo6Q3Jl
YXRlRG9jdW1lbnRGcmFnbWVudCkpOwogfQpAQCAtNzEsMTIgKzcxLDEyIEBAIGJvb2wgRG9jdW1l
bnRGcmFnbWVudDo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSB0eXBlKSBjb25zdAogICAgIH0K
IH0KIAotUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudEZyYWdtZW50OjpjbG9uZU5vZGUoYm9vbCBk
ZWVwKQorUmVmUHRyPE5vZGU+IERvY3VtZW50RnJhZ21lbnQ6OmNsb25lTm9kZShib29sIGRlZXAp
CiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNsb25lID0gY3JlYXRlKGRvY3VtZW50
KCkpOwogICAgIGlmIChkZWVwKQogICAgICAgICBjbG9uZUNoaWxkTm9kZXMoY2xvbmUuZ2V0KCkp
OwotICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNsb25lOwogfQogCiB2
b2lkIERvY3VtZW50RnJhZ21lbnQ6OnBhcnNlSFRNTChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRWxl
bWVudCogY29udGV4dEVsZW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBv
bGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IDU0M2I1OWUuLjEw
ZmNhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApAQCAtMzMsOCArMzMs
OCBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50IDogcHVibGljIENvbnRhaW5lck5vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7
CisgICAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsK
KyAgICBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik7CiAKICAgICB2b2lkIHBhcnNlSFRNTChjb25zdCBTdHJpbmcmLCBFbGVtZW50
KiBjb250ZXh0RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93U2NyaXB0aW5nQ29u
dGVudCk7CiAgICAgYm9vbCBwYXJzZVhNTChjb25zdCBTdHJpbmcmLCBFbGVtZW50KiBjb250ZXh0
RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93U2NyaXB0aW5nQ29udGVudCk7CkBA
IC00OCw3ICs0OCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5vZGVU
eXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVm
UHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50VHlwZS5jcHAKaW5kZXggMGE2ODcxMi4uMjkyMWYzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50VHlwZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgTm9kZTo6Tm9kZVR5cGUg
RG9jdW1lbnRUeXBlOjpub2RlVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIERPQ1VNRU5UX1RZUEVf
Tk9ERTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudFR5cGU6OmNsb25lTm9kZShib29s
IC8qZGVlcCovKQorUmVmUHRyPE5vZGU+IERvY3VtZW50VHlwZTo6Y2xvbmVOb2RlKGJvb2wgLypk
ZWVwKi8pCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBtX25hbWUsIG1fcHVibGlj
SWQsIG1fc3lzdGVtSWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCmluZGV4IGE5Yjdh
NmEuLmQ5MjE1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgKQEAgLTMyLDcgKzMyLDcg
QEAgY2xhc3MgTmFtZWROb2RlTWFwOwogCiBjbGFzcyBEb2N1bWVudFR5cGUgZmluYWwgOiBwdWJs
aWMgTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPiBj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQpCisgICAgc3RhdGljIFJlZlB0cjxE
b2N1bWVudFR5cGU+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRG9jdW1lbnRUeXBlKGRvY3VtZW50LCBuYW1l
LCBwdWJsaWNJZCwgc3lzdGVtSWQpKTsKICAgICB9CkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBVUkwgYmFzZVVSSSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
U3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBOb2RlVHlwZSBu
b2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBj
bG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBj
bG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKIAogICAgIFN0cmluZyBtX25hbWU7CiAgICAg
U3RyaW5nIG1fcHVibGljSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMTY3NWExZC4uMjM2
NDcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBB
dHRyKiBmaW5kQXR0ck5vZGVJbkxpc3QoVmVjdG9yPFJlZlB0cjxBdHRyPj4mIGF0dHJOb2RlTGlz
dCwgY29uc3QgUXVhbGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8RWxl
bWVudD4gRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKK1JlZlB0cjxFbGVtZW50PiBFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlRWxlbWVudCkpOwog
fQpAQCAtMjg3LDE5ICsyODcsMTkgQEAgREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKEVsZW1lbnQsIGVycm9yKTsKIERFRklORV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihFbGVtZW50LCBmb2N1cyk7CiBERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoRWxlbWVudCwgbG9hZCk7CiAKLVBhc3NSZWZQdHI8Tm9kZT4gRWxlbWVudDo6Y2xv
bmVOb2RlKGJvb2wgZGVlcCkKK1JlZlB0cjxOb2RlPiBFbGVtZW50OjpjbG9uZU5vZGUoYm9vbCBk
ZWVwKQogewogICAgIHJldHVybiBkZWVwID8gY2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKCkgOiBj
bG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBF
bGVtZW50OjpjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4oKQorUmVmUHRyPEVsZW1lbnQ+IEVsZW1l
bnQ6OmNsb25lRWxlbWVudFdpdGhDaGlsZHJlbigpCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGNs
b25lID0gY2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7CiAgICAgY2xvbmVDaGlsZE5vZGVz
KGNsb25lLmdldCgpKTsKICAgICByZXR1cm4gY2xvbmUucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpCitSZWZQ
dHI8RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCkKIHsKICAg
ICBSZWZQdHI8RWxlbWVudD4gY2xvbmUgPSBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKCk7CiAgICAgLy8gVGhpcyB3aWxsIGNhdGNoIEhUTUwgZWxlbWVudHMgaW4gdGhl
IHdyb25nIG5hbWVzcGFjZSB0aGF0IGFyZSBub3QgY29ycmVjdGx5IGNvcGllZC4KQEAgLTMxMCwx
MiArMzEwLDEyIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0
aG91dENoaWxkcmVuKCkKICAgICByZXR1cm4gY2xvbmUucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hp
bGRyZW4oKQorUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRy
aWJ1dGVzQW5kQ2hpbGRyZW4oKQogewogICAgIHJldHVybiBkb2N1bWVudCgpLmNyZWF0ZUVsZW1l
bnQodGFnUU5hbWUoKSwgZmFsc2UpOwogfQogCi1QYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmRl
dGFjaEF0dHJpYnV0ZSh1bnNpZ25lZCBpbmRleCkKK1JlZlB0cjxBdHRyPiBFbGVtZW50OjpkZXRh
Y2hBdHRyaWJ1dGUodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnREYXRhKCkp
OwogCkBAIC04ODEsNyArODgxLDcgQEAgSW50UmVjdCBFbGVtZW50Ojpib3VuZHNJblJvb3RWaWV3
U3BhY2UoKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQdHI8Q2xpZW50UmVjdExp
c3Q+IEVsZW1lbnQ6OmdldENsaWVudFJlY3RzKCkKK1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gRWxl
bWVudDo6Z2V0Q2xpZW50UmVjdHMoKQogewogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKQEAgLTg5OCw3ICs4OTgsNyBAQCBQYXNzUmVmUHRy
PENsaWVudFJlY3RMaXN0PiBFbGVtZW50OjpnZXRDbGllbnRSZWN0cygpCiAgICAgcmV0dXJuIENs
aWVudFJlY3RMaXN0OjpjcmVhdGUocXVhZHMpOwogfQogCi1QYXNzUmVmUHRyPENsaWVudFJlY3Q+
IEVsZW1lbnQ6OmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpCitSZWZQdHI8Q2xpZW50UmVjdD4gRWxl
bWVudDo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkKIHsKICAgICBkb2N1bWVudCgpLnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCkBAIC0xNDgyLDcgKzE0ODIsNyBAQCB2
b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQogICAgIG9sZFJvb3QtPmRpc3RyaWJ1dG9y
KCkuaW52YWxpZGF0ZURpc3RyaWJ1dGlvbih0aGlzKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFkb3dS
b290PiBFbGVtZW50OjpjcmVhdGVTaGFkb3dSb290KEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRy
PFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1Jvb3QoRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgaWYgKGFsd2F5c0NyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkKICAgICAgICAg
ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwpAQCAtMTY5MCw3ICsxNjkwLDcgQEAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxBdHRyPj4mIEVsZW1lbnQ6OmF0dHJOb2RlTGlzdCgpCiAgICAgcmV0dXJu
ICphdHRyTm9kZUxpc3RGb3JFbGVtZW50KCp0aGlzKTsKIH0KIAotUGFzc1JlZlB0cjxBdHRyPiBF
bGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlKEF0dHIqIGF0dHJOb2RlLCBFeGNlcHRpb25Db2RlJiBl
YykKK1JlZlB0cjxBdHRyPiBFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlKEF0dHIqIGF0dHJOb2Rl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWF0dHJOb2RlKSB7CiAgICAgICAgIGVj
ID0gVFlQRV9NSVNNQVRDSF9FUlI7CkBAIC0xNzI4LDEyICsxNzI4LDEyIEBAIFBhc3NSZWZQdHI8
QXR0cj4gRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZShBdHRyKiBhdHRyTm9kZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiAgICAgcmV0dXJuIG9sZEF0dHJOb2RlLnJlbGVhc2UoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxBdHRyPiBFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlTlMoQXR0ciogYXR0ciwgRXhjZXB0
aW9uQ29kZSYgZWMpCitSZWZQdHI8QXR0cj4gRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZU5TKEF0
dHIqIGF0dHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIHJldHVybiBzZXRBdHRyaWJ1dGVO
b2RlKGF0dHIsIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxBdHRyPiBFbGVtZW50OjpyZW1vdmVBdHRy
aWJ1dGVOb2RlKEF0dHIqIGF0dHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEF0dHI+IEVs
ZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciogYXR0ciwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgaWYgKCFhdHRyKSB7CiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CkBA
IC0xODQwLDcgKzE4NDAsNyBAQCBib29sIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdAogICAgIHJldHVybiBy
ZW1vdmVBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCBuYW1lc3Bh
Y2VVUkkpKTsKIH0KIAotUGFzc1JlZlB0cjxBdHRyPiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2Rl
KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQorUmVmUHRyPEF0dHI+IEVsZW1lbnQ6Omdl
dEF0dHJpYnV0ZU5vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCiB7CiAgICAgaWYg
KCFlbGVtZW50RGF0YSgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE4NTEsNyArMTg1MSw3IEBA
IFBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZShjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsTmFtZSkKICAgICByZXR1cm4gZW5zdXJlQXR0cihhdHRyaWJ1dGUtPm5hbWUo
KSk7CiB9CiAKLVBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9kZU5TKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
TmFtZSkKK1JlZlB0cjxBdHRyPiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlTlMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQog
ewogICAgIGlmICghZWxlbWVudERhdGEoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNzYyLDcg
KzI3NjIsNyBAQCB2b2lkIEVsZW1lbnQ6OmRpZFJlbW92ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9k
aWZpZWRFdmVudCgpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBFbGVtZW50Ojpl
bnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSB0eXBlKQorUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiBFbGVtZW50OjplbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xsZWN0
aW9uVHlwZSB0eXBlKQogewogICAgIGlmIChIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGNh
Y2hlZEhUTUxDb2xsZWN0aW9uKHR5cGUpKQogICAgICAgICByZXR1cm4gY29sbGVjdGlvbjsKQEAg
LTI3OTUsMTQgKzI3OTUsMTQgQEAgdm9pZCBFbGVtZW50OjpzZXRTYXZlZExheWVyU2Nyb2xsT2Zm
c2V0KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0
U2F2ZWRMYXllclNjcm9sbE9mZnNldChzaXplKTsKIH0KIAotUGFzc1JlZlB0cjxBdHRyPiBFbGVt
ZW50OjphdHRySWZFeGlzdHMoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKK1JlZlB0cjxBdHRy
PiBFbGVtZW50OjphdHRySWZFeGlzdHMoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAg
ICBpZiAoYXV0byogYXR0ck5vZGVMaXN0ID0gYXR0ck5vZGVMaXN0Rm9yRWxlbWVudCgqdGhpcykp
CiAgICAgICAgIHJldHVybiBmaW5kQXR0ck5vZGVJbkxpc3QoKmF0dHJOb2RlTGlzdCwgbmFtZSk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6ZW5z
dXJlQXR0cihjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQorUmVmUHRyPEF0dHI+IEVsZW1lbnQ6
OmVuc3VyZUF0dHIoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBhdXRvJiBhdHRy
Tm9kZUxpc3QgPSBlbnN1cmVBdHRyTm9kZUxpc3RGb3JFbGVtZW50KCp0aGlzKTsKICAgICBSZWZQ
dHI8QXR0cj4gYXR0ck5vZGUgPSBmaW5kQXR0ck5vZGVJbkxpc3QoYXR0ck5vZGVMaXN0LCBuYW1l
KTsKQEAgLTI5MjEsMTAgKzI5MjEsMTAgQEAgdm9pZCBFbGVtZW50OjpkaWREZXRhY2hSZW5kZXJl
cnMoKQogICAgIEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSk7CiB9CiAK
LVBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IEVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIo
UmVuZGVyU3R5bGUmKQorUmVmUHRyPFJlbmRlclN0eWxlPiBFbGVtZW50OjpjdXN0b21TdHlsZUZv
clJlbmRlcmVyKFJlbmRlclN0eWxlJikKIHsKICAgICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNv
bHZlQ2FsbGJhY2tzKCkpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
CiB2b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQm
IG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggOTUxZjQ2Ni4uMDMzYzJiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCkBAIC01OSw3ICs1OSw3IEBAIGVudW0gU3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRl
IHsKIAogY2xhc3MgRWxlbWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+RWxlbWVudCgpOwogCiAgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhYm9ydCk7CkBAIC0yMjAsOCArMjIwLDgg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBib3VuZHNJblJvb3RWaWV3
U3BhY2UoKTsKIAotICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IGdldENsaWVudFJlY3Rz
KCk7Ci0gICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsK
KyAgICBSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IGdldENsaWVudFJlY3RzKCk7CisgICAgUmVmUHRy
PENsaWVudFJlY3Q+IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgIAogICAgIC8vIFJldHVy
bnMgdGhlIGFic29sdXRlIGJvdW5kaW5nIGJveCB0cmFuc2xhdGVkIGludG8gY2xpZW50IGNvb3Jk
aW5hdGVzLgogICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgY2xpZW50UmVjdCgpIGNvbnN0OwpA
QCAtMjMxLDE2ICsyMzEsMTYgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3ZlQXR0cmlidXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CiAgICAgYm9vbCByZW1vdmVBdHRyaWJ1dGVOUyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUpOwogCi0gICAgUGFzc1JlZlB0cjxBdHRyPiBkZXRhY2hBdHRyaWJ1dGUodW5zaWduZWQgaW5k
ZXgpOworICAgIFJlZlB0cjxBdHRyPiBkZXRhY2hBdHRyaWJ1dGUodW5zaWduZWQgaW5kZXgpOwog
Ci0gICAgUGFzc1JlZlB0cjxBdHRyPiBnZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSk7Ci0gICAgUGFzc1JlZlB0cjxBdHRyPiBnZXRBdHRyaWJ1dGVOb2RlTlMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
KTsKLSAgICBQYXNzUmVmUHRyPEF0dHI+IHNldEF0dHJpYnV0ZU5vZGUoQXR0ciosIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEF0dHI+IHNldEF0dHJpYnV0ZU5vZGVOUyhBdHRyKiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8QXR0cj4gcmVtb3ZlQXR0cmlidXRlTm9k
ZShBdHRyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxBdHRyPiBnZXRBdHRyaWJ1dGVO
b2RlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgUmVmUHRyPEF0dHI+IGdldEF0dHJp
YnV0ZU5vZGVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUpOworICAgIFJlZlB0cjxBdHRyPiBzZXRBdHRyaWJ1dGVOb2RlKEF0
dHIqLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPEF0dHI+IHNldEF0dHJpYnV0ZU5vZGVO
UyhBdHRyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxBdHRyPiByZW1vdmVBdHRyaWJ1
dGVOb2RlKEF0dHIqLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPEF0dHI+IGF0
dHJJZkV4aXN0cyhjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgUGFzc1JlZlB0cjxBdHRyPiBl
bnN1cmVBdHRyKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICBSZWZQdHI8QXR0cj4gYXR0cklm
RXhpc3RzKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICBSZWZQdHI8QXR0cj4gZW5zdXJlQXR0
cihjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEF0dHI+
PiYgYXR0ck5vZGVMaXN0KCk7CiAKQEAgLTI2Nyw4ICsyNjcsOCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgUGFzc1JlZlB0
cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4oKTsKLSAgICBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOworICAgIFJlZlB0cjxFbGVtZW50
PiBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4oKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gY2xvbmVF
bGVtZW50V2l0aG91dENoaWxkcmVuKCk7CiAKICAgICB2b2lkIG5vcm1hbGl6ZUF0dHJpYnV0ZXMo
KTsKICAgICBTdHJpbmcgbm9kZU5hbWVQcmVzZXJ2aW5nQ2FzZSgpIGNvbnN0OwpAQCAtMzE1LDcg
KzMxNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2hhZG93Um9vdCogc2hhZG93
Um9vdCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4g
Y3JlYXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFNoYWRvd1Jvb3Q+IGNyZWF0ZVNoYWRvd1Jvb3QoRXhjZXB0aW9uQ29kZSYpOwogCiAgICAg
U2hhZG93Um9vdCogdXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0OwogICAgIFNoYWRvd1Jvb3Qm
IGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKQEAgLTU0MCw3ICs1NDAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGFjaFJlbmRl
cmVycygpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVG
b3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpOworICAgIHZpcnR1YWwgUmVmUHRy
PFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRT
dHlsZSk7CiAKICAgICB2b2lkIHNldEJlZm9yZVBzZXVkb0VsZW1lbnQoUGFzc1JlZlB0cjxQc2V1
ZG9FbGVtZW50Pik7CiAgICAgdm9pZCBzZXRBZnRlclBzZXVkb0VsZW1lbnQoUGFzc1JlZlB0cjxQ
c2V1ZG9FbGVtZW50Pik7CkBAIC01NjQsNyArNTY0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
Y2xlYXJUYWJJbmRleEV4cGxpY2l0bHlJZk5lZWRlZCgpOyAgICAKICAgICB2b2lkIHNldFRhYklu
ZGV4RXhwbGljaXRseShzaG9ydCk7CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBl
bnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSk7CisgICAgUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSk7
CiAgICAgSFRNTENvbGxlY3Rpb24qIGNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBl
KTsKIAogICAgIC8vIGNsYXNzQXR0cmlidXRlQ2hhbmdlZCgpIGV4aXN0cyB0byBzaGFyZSBjb2Rl
IGJldHdlZW4KQEAgLTYyNSw4ICs2MjUsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gY2xvbmVOb2Rl
IGlzIHByaXZhdGUgc28gdGhhdCBub24tdmlydHVhbCBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4g
YW5kIGNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbgogICAgIC8vIGFyZSB1c2VkIGluc3RlYWQu
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0
QXR0cmlidXRlc0FuZENoaWxkcmVuKCk7CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVO
b2RlKGJvb2wgZGVlcCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY2xv
bmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpOwogCiAgICAgdm9pZCBhZGRT
aGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4pOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93
Um9vdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmNwcAppbmRleCA4MmNjYjZl
Li5lN2IyZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmNwcApAQCAtMzEs
NyArMzEsNyBAQCBpbmxpbmUgRW50aXR5UmVmZXJlbmNlOjpFbnRpdHlSZWZlcmVuY2UoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGVudGl0eQogewogfQogCi1QYXNzUmVmUHRyPEVu
dGl0eVJlZmVyZW5jZT4gRW50aXR5UmVmZXJlbmNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIGVudGl0eU5hbWUpCitSZWZQdHI8RW50aXR5UmVmZXJlbmNlPiBFbnRp
dHlSZWZlcmVuY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZW50
aXR5TmFtZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVudGl0eVJlZmVyZW5jZShkb2N1
bWVudCwgZW50aXR5TmFtZSkpOwogfQpAQCAtNDYsNyArNDYsNyBAQCBOb2RlOjpOb2RlVHlwZSBF
bnRpdHlSZWZlcmVuY2U6Om5vZGVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gRU5USVRZX1JFRkVS
RU5DRV9OT0RFOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+IEVudGl0eVJlZmVyZW5jZTo6Y2xvbmVO
b2RlKGJvb2wpCitSZWZQdHI8Tm9kZT4gRW50aXR5UmVmZXJlbmNlOjpjbG9uZU5vZGUoYm9vbCkK
IHsKICAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIG1fZW50aXR5TmFtZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmgKaW5kZXggNGE2NGEwOS4uNjE2NGI5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuaApAQCAtMjgsMTQgKzI4LDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRW50aXR5UmVmZXJlbmNlIGZpbmFsIDogcHVibGljIENvbnRh
aW5lck5vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudGl0eVJlZmVyZW5j
ZT4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBlbnRpdHlOYW1lKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEVudGl0eVJlZmVyZW5jZT4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5n
JiBlbnRpdHlOYW1lKTsKIAogcHJpdmF0ZToKICAgICBFbnRpdHlSZWZlcmVuY2UoRG9jdW1lbnQm
LCBjb25zdCBTdHJpbmcmIGVudGl0eU5hbWUpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5h
bWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29s
IGRlZXApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29s
IGRlZXApIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIG1fZW50aXR5TmFtZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKaW5kZXggY2FjN2VhMS4uN2IyZTFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDAzLDcg
KzQwMyw3IEBAIHZvaWQgTm9kZTo6c2V0Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYgLypub2RlVmFs
dWUqLywgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gQnkgZGVmYXVsdCwgc2V0dGluZyBub2Rl
VmFsdWUgaGFzIG5vIGVmZmVjdC4KIH0KIAotUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Y2hp
bGROb2RlcygpCitSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmNoaWxkTm9kZXMoKQogewogICAgIGlm
IChpczxDb250YWluZXJOb2RlPigqdGhpcykpCiAgICAgICAgIHJldHVybiBlbnN1cmVSYXJlRGF0
YSgpLmVuc3VyZU5vZGVMaXN0cygpLmVuc3VyZUNoaWxkTm9kZUxpc3QoZG93bmNhc3Q8Q29udGFp
bmVyTm9kZT4oKnRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGZkYjFlNDcuLmU4ZjUyOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaApAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90
IHByZXZpb3VzU2libGluZ01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihO
b2RlLCBtX3ByZXZpb3VzKTsgfQogICAgIE5vZGUqIG5leHRTaWJsaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9uZXh0OyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBuZXh0U2libGluZ01lbW9yeU9mZnNl
dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb2RlLCBtX25leHQpOyB9Ci0gICAgUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gY2hpbGROb2RlcygpOworICAgIFJlZlB0cjxOb2RlTGlzdD4gY2hpbGRO
b2RlcygpOwogICAgIE5vZGUqIGZpcnN0Q2hpbGQoKSBjb25zdDsKICAgICBOb2RlKiBsYXN0Q2hp
bGQoKSBjb25zdDsKICAgICBib29sIGhhc0F0dHJpYnV0ZXMoKSBjb25zdDsKQEAgLTIwMSw3ICsy
MDEsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShFeGNlcHRp
b25Db2RlJik7CiAgICAgYm9vbCBoYXNDaGlsZE5vZGVzKCkgY29uc3QgeyByZXR1cm4gZmlyc3RD
aGlsZCgpOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRl
ZXApID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSA9
IDA7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IDIyMDY1MmEuLmI0ZGZm
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBA
IC01Miw3ICs1Miw3IEBAIGlubGluZSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OlByb2Nlc3NpbmdJ
bnN0cnVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0CiB7CiB9CiAKLVBhc3NSZWZQ
dHI8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRh
dGEpCitSZWZQdHI8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBT
dHJpbmcmIGRhdGEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24oZG9jdW1lbnQsIHRhcmdldCwgZGF0YSkpOwogfQpAQCAtNzksNyArNzksNyBAQCBOb2Rl
OjpOb2RlVHlwZSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Om5vZGVUeXBlKCkgY29uc3QKICAgICBy
ZXR1cm4gUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+
IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2xvbmVOb2RlKGJvb2wgLypkZWVwKi8pCitSZWZQdHI8
Tm9kZT4gUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjbG9uZU5vZGUoYm9vbCAvKmRlZXAqLykKIHsK
ICAgICAvLyBGSVhNRTogSXMgaXQgYSBwcm9ibGVtIHRoYXQgdGhpcyBkb2VzIG5vdCBjb3B5IG1f
bG9jYWxIcmVmPwogICAgIC8vIFdoYXQgYWJvdXQgb3RoZXIgZGF0YSBtZW1iZXJzPwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCmluZGV4IDNkNzIzYWEuLjBlNGU4
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKQEAgLTM0
LDcgKzM0LDcgQEAgY2xhc3MgQ1NTU3R5bGVTaGVldDsKIAogY2xhc3MgUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uIGZpbmFsIDogcHVibGljIENoYXJhY3RlckRhdGEsIHByaXZhdGUgQ2FjaGVkU3R5bGVT
aGVldENsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvY2Vzc2luZ0lu
c3RydWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3Qg
U3RyaW5nJiBkYXRhKTsKKyAgICBzdGF0aWMgUmVmUHRyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4g
Y3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0
YSk7CiAgICAgdmlydHVhbCB+UHJvY2Vzc2luZ0luc3RydWN0aW9uKCk7CiAKICAgICBjb25zdCBT
dHJpbmcmIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9CkBAIC01OCw3ICs1OCw3
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRv
KENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20o
Q29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1BzZXVkb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3Bw
CmluZGV4IDNjZDRmMDguLjdjMmJjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
c2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5j
cHAKQEAgLTcwLDcgKzcwLDcgQEAgUHNldWRvRWxlbWVudDo6flBzZXVkb0VsZW1lbnQoKQogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlbWVudERlc3Ryb3llZChkb2N1bWVu
dCgpLnBhZ2UoKSwgdGhpcyk7CiB9CiAKLVBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFBzZXVkb0Vs
ZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKQor
UmVmUHRyPFJlbmRlclN0eWxlPiBQc2V1ZG9FbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVy
KFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkKIHsKICAgICByZXR1cm4gbV9ob3N0RWxlbWVudC0+
cmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUobV9wc2V1ZG9JZCwgJnBhcmVudFN0eWxl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCmluZGV4IDRiZTVjOTYuLjU0MDMwYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgRWxlbWVudCogaG9zdEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hvc3RFbGVtZW50
OyB9CiAgICAgdm9pZCBjbGVhckhvc3RFbGVtZW50KCkgeyBtX2hvc3RFbGVtZW50ID0gbnVsbHB0
cjsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZv
clJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUm
IHBhcmVudFN0eWxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVuZGVy
ZXJzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
UmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggYWQ4
YTNlZC4uYWExMWU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC03Nyw3ICs3Nyw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYpIG92ZXJyaWRlOwogCiAgICAgLy8gU2hhZG93Um9vdHMgc2hvdWxkIG5ldmVyIGJlIGNs
b25lZC4KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wpIG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9v
bCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0
IGhhcHBlbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODM0CiAg
ICAgYm9vbCBpc09ycGhhbigpIGNvbnN0IHsgcmV0dXJuICFob3N0RWxlbWVudCgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQu
aAppbmRleCBlNzRiNDNhLi5mOGI2MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50
IGZpbmFsIDogcHVibGljIERvY3VtZW50RnJhZ21lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IEVsZW1lbnQqIGhvc3QpCisgICAgc3RhdGljIFJlZlB0cjxUZW1w
bGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBFbGVtZW50KiBob3N0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBU
ZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBob3N0KSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHQuY3BwCmluZGV4IGQ1NGJkYWUuLmI5YjhjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAg
LTM4LDE3ICszOCwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8VGV4
dD4gVGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhKQor
UmVmUHRyPFRleHQ+IFRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHQoZG9jdW1lbnQsIGRhdGEs
IENyZWF0ZVRleHQpKTsKIH0KIAotUGFzc1JlZlB0cjxUZXh0PiBUZXh0OjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmUHRyPFRl
eHQ+IFRleHQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIGRhdGEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0KGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KSwgZGF0YSwgQ3JlYXRlVGV4dCkpOwogfQogCi1QYXNzUmVmUHRyPFRl
eHQ+IFRleHQ6OmNyZWF0ZUVkaXRpbmdUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBkYXRhKQorUmVmUHRyPFRleHQ+IFRleHQ6OmNyZWF0ZUVkaXRpbmdUZXh0KERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVGV4dChkb2N1bWVudCwgZGF0YSwgQ3JlYXRlRWRpdGluZ1RleHQpKTsKIH0KQEAgLTU4LDcg
KzU4LDcgQEAgVGV4dDo6flRleHQoKQogICAgIEFTU0VSVCghcmVuZGVyZXIoKSk7CiB9CiAKLVBh
c3NSZWZQdHI8VGV4dD4gVGV4dDo6c3BsaXRUZXh0KHVuc2lnbmVkIG9mZnNldCwgRXhjZXB0aW9u
Q29kZSYgZWMpCitSZWZQdHI8VGV4dD4gVGV4dDo6c3BsaXRUZXh0KHVuc2lnbmVkIG9mZnNldCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwogCkBAIC0xMjQsNyArMTI0LDcgQEAg
U3RyaW5nIFRleHQ6Ondob2xlVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmlu
ZygpOwogfQogCi1QYXNzUmVmUHRyPFRleHQ+IFRleHQ6OnJlcGxhY2VXaG9sZVRleHQoY29uc3Qg
U3RyaW5nJiBuZXdUZXh0LCBFeGNlcHRpb25Db2RlJikKK1JlZlB0cjxUZXh0PiBUZXh0OjpyZXBs
YWNlV2hvbGVUZXh0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCwgRXhjZXB0aW9uQ29kZSYpCiB7CiAg
ICAgLy8gUmVtb3ZlIGFsbCBhZGphY2VudCB0ZXh0IG5vZGVzLCBhbmQgcmVwbGFjZSB0aGUgY29u
dGVudHMgb2YgdGhpcyBvbmUuCiAKQEAgLTE2OSwxMiArMTY5LDExIEBAIE5vZGU6Ok5vZGVUeXBl
IFRleHQ6Om5vZGVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gVEVYVF9OT0RFOwogfQogCi1QYXNz
UmVmUHRyPE5vZGU+IFRleHQ6OmNsb25lTm9kZShib29sIC8qZGVlcCovKQorUmVmUHRyPE5vZGU+
IFRleHQ6OmNsb25lTm9kZShib29sIC8qZGVlcCovKQogewogICAgIHJldHVybiBjcmVhdGUoZG9j
dW1lbnQoKSwgZGF0YSgpKTsKIH0KIAotCiBzdGF0aWMgYm9vbCBpc1NWR1NoYWRvd1RleHQoVGV4
dCogdGV4dCkKIHsKICAgICBOb2RlKiBwYXJlbnROb2RlID0gdGV4dC0+cGFyZW50Tm9kZSgpOwpA
QCAtMjA0LDEyICsyMDMsMTIgQEAgYm9vbCBUZXh0OjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBl
KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxUZXh0PiBUZXh0Ojp2
aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZlB0cjxUZXh0PiBUZXh0Ojp2aXJ0
dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKGRvY3Vt
ZW50KCksIGRhdGEpOwogfQogCi1QYXNzUmVmUHRyPFRleHQ+IFRleHQ6OmNyZWF0ZVdpdGhMZW5n
dGhMaW1pdChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkIGxlbmd0aExpbWl0KQorUmVmUHRyPFRleHQ+IFRleHQ6OmNyZWF0ZVdp
dGhMZW5ndGhMaW1pdChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aExpbWl0KQogewogICAgIHVuc2lnbmVkIGRhdGFM
ZW5ndGggPSBkYXRhLmxlbmd0aCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAppbmRleCA2MGRlZWY5Li5mNjc5M2I1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmgKQEAgLTM1LDE5ICszNSwxOSBAQCBjbGFzcyBUZXh0IDogcHVibGljIENo
YXJhY3RlckRhdGEgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0
TGVuZ3RoTGltaXQgPSAxIDw8IDE2OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dD4gY3Jl
YXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4
dD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUZXh0PiBjcmVhdGVXaXRoTGVuZ3RoTGltaXQoRG9jdW1lbnQmLCBj
b25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3NpdGlvbkluU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGhM
aW1pdCA9IGRlZmF1bHRMZW5ndGhMaW1pdCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dD4g
Y3JlYXRlRWRpdGluZ1RleHQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMg
UmVmUHRyPFRleHQ+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRp
YyBSZWZQdHI8VGV4dD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJp
bmcmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFRleHQ+IGNyZWF0ZVdpdGhMZW5ndGhMaW1pdChEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvc2l0aW9uSW5TdHJpbmcsIHVuc2lnbmVk
IGxlbmd0aExpbWl0ID0gZGVmYXVsdExlbmd0aExpbWl0KTsKKyAgICBzdGF0aWMgUmVmUHRyPFRl
eHQ+IGNyZWF0ZUVkaXRpbmdUZXh0KERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7CiAKICAgICB2
aXJ0dWFsIH5UZXh0KCk7CiAKLSAgICBQYXNzUmVmUHRyPFRleHQ+IHNwbGl0VGV4dCh1bnNpZ25l
ZCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8VGV4dD4gc3BsaXRUZXh0KHVu
c2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gRE9NIExldmVsIDM6IGh0
dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUNvcmUvY29yZS5odG1sI0lELTEzMTIyOTU3
NzIKIAogICAgIFN0cmluZyB3aG9sZVRleHQoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFRleHQ+
IHJlcGxhY2VXaG9sZVRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJl
ZlB0cjxUZXh0PiByZXBsYWNlV2hvbGVUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICAKICAgICBSZW5kZXJQdHI8UmVuZGVyVGV4dD4gY3JlYXRlVGV4dFJlbmRlcmVyKGNv
bnN0IFJlbmRlclN0eWxlJik7CiAgICAgCkBAIC02NCwxMCArNjQsMTAgQEAgcHJvdGVjdGVkOgog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRleHQ+IHZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBSZWZQdHI8VGV4dD4gdmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcm
KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIo
Y2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCA1YzFiZjUwLi4xMTE3
ODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApA
QCAtMTEyLDEyICsxMTIsMTIgQEAgYm9vbCBpc0VtcHR5Rm9udFRhZyhjb25zdCBFbGVtZW50KiBl
bGVtZW50LCBTaG91bGRTdHlsZUF0dHJpYnV0ZUJlRW1wdHkgc2hvdWxkU3QKICAgICByZXR1cm4g
aGFzTm9BdHRyaWJ1dGVPck9ubHlTdHlsZUF0dHJpYnV0ZShkb3duY2FzdDxIVE1MRm9udEVsZW1l
bnQ+KGVsZW1lbnQpLCBzaG91bGRTdHlsZUF0dHJpYnV0ZUJlRW1wdHkpOwogfQogCi1zdGF0aWMg
UGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVGb250RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQp
CitzdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUZvbnRFbGVtZW50KERvY3VtZW50JiBkb2N1
bWVudCkKIHsKICAgICByZXR1cm4gY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQsIGZvbnRUYWcp
OwogfQogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVTdHlsZVNwYW5FbGVtZW50KERv
Y3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlU3R5bGVTcGFuRWxl
bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50
KGRvY3VtZW50LCBzcGFuVGFnKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuaAppbmRleCAyMjViMGQyLi4xMGY2MTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCkBAIC0xMzYsNyArMTM2LDcgQEAgZW51bSBTaG91bGRT
dHlsZUF0dHJpYnV0ZUJlRW1wdHkgeyBBbGxvd05vbkVtcHR5U3R5bGVBdHRyaWJ1dGUsIFN0eWxl
QXR0cmlidXRlU2gKIGJvb2wgaXNFbXB0eUZvbnRUYWcoY29uc3QgRWxlbWVudCosIFNob3VsZFN0
eWxlQXR0cmlidXRlQmVFbXB0eSA9IFN0eWxlQXR0cmlidXRlU2hvdWxkQmVFbXB0eSk7CiBib29s
IGlzTGVnYWN5QXBwbGVTdHlsZVNwYW4oY29uc3QgTm9kZSopOwogYm9vbCBpc1N0eWxlU3Bhbk9y
U3BhbldpdGhPbmx5U3R5bGVBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCopOwotUGFzc1JlZlB0cjxI
VE1MRWxlbWVudD4gY3JlYXRlU3R5bGVTcGFuRWxlbWVudChEb2N1bWVudCYpOworUmVmUHRyPEhU
TUxFbGVtZW50PiBjcmVhdGVTdHlsZVNwYW5FbGVtZW50KERvY3VtZW50Jik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNl
cnRMaXN0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21t
YW5kLmNwcAppbmRleCA1OGU1YzcxLi42MTYyNmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydExpc3RDb21tYW5kLmNwcApAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgTm9kZSog
ZW5jbG9zaW5nTGlzdENoaWxkKE5vZGUqIG5vZGUsIE5vZGUqIGxpc3ROb2RlKQogICAgIHJldHVy
biBsaXN0Q2hpbGQ7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21t
YW5kOjppbnNlcnRMaXN0KERvY3VtZW50JiBkb2N1bWVudCwgVHlwZSB0eXBlKQorUmVmUHRyPEhU
TUxFbGVtZW50PiBJbnNlcnRMaXN0Q29tbWFuZDo6aW5zZXJ0TGlzdChEb2N1bWVudCYgZG9jdW1l
bnQsIFR5cGUgdHlwZSkKIHsKICAgICBSZWZQdHI8SW5zZXJ0TGlzdENvbW1hbmQ+IGluc2VydENv
bW1hbmQgPSBjcmVhdGUoZG9jdW1lbnQsIHR5cGUpOwogICAgIGluc2VydENvbW1hbmQtPmFwcGx5
KCk7CkBAIC02NCw3ICs2NCw3IEBAIEhUTUxFbGVtZW50KiBJbnNlcnRMaXN0Q29tbWFuZDo6Zml4
T3JwaGFuZWRMaXN0Q2hpbGQoTm9kZSogbm9kZSkKICAgICByZXR1cm4gbGlzdEVsZW1lbnQuZ2V0
KCk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21tYW5kOjptZXJn
ZVdpdGhOZWlnaGJvcmluZ0xpc3RzKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IHBhc3NlZExpc3Qp
CitSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RDb21tYW5kOjptZXJnZVdpdGhOZWlnaGJv
cmluZ0xpc3RzKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IHBhc3NlZExpc3QpCiB7CiAgICAgUmVm
UHRyPEhUTUxFbGVtZW50PiBsaXN0ID0gcGFzc2VkTGlzdDsKICAgICBFbGVtZW50KiBwcmV2aW91
c0xpc3QgPSBsaXN0LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7CkBAIC03NSwxNCArNzUsMTQg
QEAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlzdENvbW1hbmQ6Om1lcmdlV2l0aE5l
aWdoYm9yaW5nTGlzdHMoUGFzc1JlZlB0cjwKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
RWxlbWVudCogc2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGxpc3QuZ2V0
KCkpOwogICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KHNpYmxpbmcpKQotICAgICAgICByZXR1cm4g
bGlzdC5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBsaXN0OwogCiAgICAgUmVmUHRyPEhUTUxF
bGVtZW50PiBuZXh0TGlzdCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PihzaWJsaW5nKTsKICAgICBp
ZiAoY2FuTWVyZ2VMaXN0cyhsaXN0LmdldCgpLCBuZXh0TGlzdC5nZXQoKSkpIHsKICAgICAgICAg
bWVyZ2VJZGVudGljYWxFbGVtZW50cyhsaXN0LCBuZXh0TGlzdCk7Ci0gICAgICAgIHJldHVybiBu
ZXh0TGlzdC5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBuZXh0TGlzdDsKICAgICB9Ci0gICAg
cmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgIHJldHVybiBsaXN0OwogfQogCiBib29sIEluc2Vy
dExpc3RDb21tYW5kOjpzZWxlY3Rpb25IYXNMaXN0T2ZUeXBlKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGlzdFRhZykKQEAgLTMzMSw3ICsz
MzEsNyBAQCBzdGF0aWMgRWxlbWVudCogYWRqYWNlbnRFbmNsb3NpbmdMaXN0KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgcG9zLCBjb25zdCBWaXNpYmxlUAogICAgIHJldHVybiBsaXN0Tm9kZTsKIH0K
IAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlzdENvbW1hbmQ6Omxpc3RpZnlQYXJh
Z3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvcmlnaW5hbFN0YXJ0LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBsaXN0VGFnKQorUmVmUHRyPEhUTUxFbGVtZW50PiBJbnNlcnRMaXN0Q29tbWFuZDo6
bGlzdGlmeVBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mIG9yaWdpbmFsU3RhcnQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGxpc3RUYWcpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0
ID0gc3RhcnRPZlBhcmFncmFwaChvcmlnaW5hbFN0YXJ0LCBDYW5Ta2lwT3ZlckVkaXRpbmdCb3Vu
ZGFyeSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9IGVuZE9mUGFyYWdyYXBoKHN0YXJ0LCBD
YW5Ta2lwT3ZlckVkaXRpbmdCb3VuZGFyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dExpc3RDb21tYW5kLmgKaW5kZXggOWE0NjU5Yi4uNmIwZmMyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuaApAQCAtMzcsMTIgKzM3LDEyIEBAIGNsYXNzIElu
c2VydExpc3RDb21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoK
ICAgICBlbnVtIFR5cGUgeyBPcmRlcmVkTGlzdCwgVW5vcmRlcmVkTGlzdCB9OwogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zZXJ0TGlzdENvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFR5cGUgbGlzdFR5cGUpCisgICAgc3RhdGljIFJlZlB0cjxJbnNlcnRMaXN0Q29tbWFuZD4g
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVHlwZSBsaXN0VHlwZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSW5zZXJ0TGlzdENvbW1hbmQoZG9jdW1lbnQsIGxpc3RUeXBl
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGluc2VydExp
c3QoRG9jdW1lbnQmLCBUeXBlKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxFbGVtZW50PiBpbnNl
cnRMaXN0KERvY3VtZW50JiwgVHlwZSk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIHByZXNlcnZl
c1R5cGluZ1N0eWxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC01NCwxMCArNTQsMTAg
QEAgcHJpdmF0ZToKIAogICAgIEhUTUxFbGVtZW50KiBmaXhPcnBoYW5lZExpc3RDaGlsZChOb2Rl
Kik7CiAgICAgYm9vbCBzZWxlY3Rpb25IYXNMaXN0T2ZUeXBlKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIFBhc3NSZWZQdHI8SFRN
TEVsZW1lbnQ+IG1lcmdlV2l0aE5laWdoYm9yaW5nTGlzdHMoUGFzc1JlZlB0cjxIVE1MRWxlbWVu
dD4pOworICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbWVyZ2VXaXRoTmVpZ2hib3JpbmdMaXN0cyhQ
YXNzUmVmUHRyPEhUTUxFbGVtZW50Pik7CiAgICAgdm9pZCBkb0FwcGx5Rm9yU2luZ2xlUGFyYWdy
YXBoKGJvb2wgZm9yY2VDcmVhdGVMaXN0LCBjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSYsIFJhbmdl
KiBjdXJyZW50U2VsZWN0aW9uKTsKICAgICB2b2lkIHVubGlzdGlmeVBhcmFncmFwaChjb25zdCBW
aXNpYmxlUG9zaXRpb24mIG9yaWdpbmFsU3RhcnQsIEhUTUxFbGVtZW50KiBsaXN0Tm9kZSwgTm9k
ZSogbGlzdENoaWxkTm9kZSk7Ci0gICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gbGlzdGlmeVBh
cmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mIG9yaWdpbmFsU3RhcnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGxpc3RUYWcpOworICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbGlzdGlmeVBhcmFn
cmFwaChjb25zdCBWaXNpYmxlUG9zaXRpb24mIG9yaWdpbmFsU3RhcnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGxpc3RUYWcpOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9saXN0RWxlbWVudDsK
ICAgICBUeXBlIG1fdHlwZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwCmluZGV4IGYzYmE5ZTUuLjY3OTY0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAgICAgCiBjbGFzcyBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNl
ciBmaW5hbCA6IHB1YmxpYyBIVE1MRG9jdW1lbnRQYXJzZXIgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyPiBjcmVhdGUoSFRNTERvY3Vt
ZW50JiBkb2N1bWVudCkKKyAgICBzdGF0aWMgUmVmUHRyPEZUUERpcmVjdG9yeURvY3VtZW50UGFy
c2VyPiBjcmVhdGUoSFRNTERvY3VtZW50JiBkb2N1bWVudCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpKTsKICAg
ICB9CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhcnNlQW5kQXBwZW5k
T25lTGluZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFwcGVuZEVudHJ5KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzaXplLCBjb25zdCBTdHJpbmcmIGRhdGUsIGJvb2wgaXNE
aXJlY3RvcnkpOyAgICAKLSAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVRERm9yRmlsZW5h
bWUoY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVRERm9yRmlsZW5h
bWUoY29uc3QgU3RyaW5nJik7CiAKICAgICBSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gbV90YWJs
ZUVsZW1lbnQ7CiAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50
UGFyc2VyOjphcHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbgog
ICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQsIElHTk9SRV9FWENFUFRJT04pOwog
fQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVh
dGVUREZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCitSZWZQdHI8RWxlbWVudD4g
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZVRERm9yRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSkKIHsKICAgICBTdHJpbmcgZnVsbFVSTCA9IGRvY3VtZW50KCktPmJhc2VV
UkwoKS5zdHJpbmcoKTsKICAgICBpZiAoZnVsbFVSTC5lbmRzV2l0aCgnLycpKQpAQCAtMjczLDE5
ICsyNzMsMTkgQEAgdm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBl
bmRPbmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVu
YW1lLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9
PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZp
ZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMg
aW5saW5lIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0
YShTZXR0aW5ncyogc2V0dGluZ3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSAwOwogICAgIGlmIChzZXR0aW5ncykKICAgICAg
ICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGlu
Z3MtPmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAg
ICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlaVxuIiwg
YnVmZmVyLT5zaXplKCkpOwotICAgIHJldHVybiBidWZmZXIucmVsZWFzZSgpOworICAgIHJldHVy
biBidWZmZXI7CiB9CiAgICAgCiBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2Fk
RG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVE
b2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0
aW5ncygpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1
bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5n
cygpKS5yZWxlYXNlKCkubGVha1JlZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3Jp
bmcgdGhlIGRhdGEsIHdlJ2QgcmF0aGVyIGFjdHVhbGx5IHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRh
IGludG8gdGhlIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsCiAgICAgLy8gc3RvcmUgdGhhdCBkb2N1
bWVudCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlz
dGluZy4gIFRoZXJlIGFyZSBjb21wbGV4aXRpZXMgd2l0aCB0aGlzIAogICAgIC8vIGFwcHJvYWNo
IHRoYXQgbWFrZSBpdCB3b3J0aCBwdXR0aW5nIHRoaXMgb2ZmLgpAQCAtNDMyLDcgKzQzMiw3IEBA
IEZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSogZnJhbWUs
IGNvbnN0IFVSTCYgdXJsKQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+
IEZUUERpcmVjdG9yeURvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQorUmVmUHRyPERvY3VtZW50UGFy
c2VyPiBGVFBEaXJlY3RvcnlEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKIHsKICAgICByZXR1cm4g
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmgKaW5kZXggNmQ3OGNmNi4uN2NhMTllNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaApAQCAtMzMsMTQg
KzMzLDE0IEBAIGNsYXNzIERPTUltcGxlbWVudGF0aW9uOwogICAgIAogY2xhc3MgRlRQRGlyZWN0
b3J5RG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGVFBEaXJlY3RvcnlEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZlB0cjxGVFBEaXJlY3RvcnlEb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEZUUERpcmVjdG9yeURvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAg
ICB9CiAKIHByaXZhdGU6CiAgICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBV
UkwmKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNl
cigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQ
YXJzZXIoKSBvdmVycmlkZTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDJmYzc4NjMuLjI1NDU4
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC02Mywx
MiArNjMsMTIgQEAgSFRNTEFuY2hvckVsZW1lbnQ6OkhUTUxBbmNob3JFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2MKIHsKIH0KIAotUGFzc1JlZlB0cjxI
VE1MQW5jaG9yRWxlbWVudD4gSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQpCitSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IEhUTUxBbmNob3JFbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEFu
Y2hvckVsZW1lbnQoYVRhZywgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQW5jaG9y
RWxlbWVudD4gSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IEhU
TUxBbmNob3JFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEFuY2hvckVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuaAppbmRleCAxNGEyNzlkLi4wZjJkNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5oCkBAIC01Nyw4ICs1Nyw4IEBAIGVudW0gewogCiBjbGFzcyBIVE1M
QW5jaG9yRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxBbmNob3JFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MQW5jaG9yRWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MQW5jaG9yRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdmlydHVhbCB+
SFRNTEFuY2hvckVsZW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVt
ZW50LmNwcAppbmRleCA1Y2ZhNWI3Li5hZmUyMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcHBsZXRFbGVtZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCBIVE1MQXBwbGV0RWxlbWVudDo6
SFRNTEFwcGxldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvYwogICAgIG1fc2VydmljZVR5cGUgPSAiYXBwbGljYXRpb24veC1qYXZhLWFwcGxldCI7CiB9
CiAKLVBhc3NSZWZQdHI8SFRNTEFwcGxldEVsZW1lbnQ+IEhUTUxBcHBsZXRFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29s
IGNyZWF0ZWRCeVBhcnNlcikKK1JlZlB0cjxIVE1MQXBwbGV0RWxlbWVudD4gSFRNTEFwcGxldEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTEFwcGxldEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCmluZGV4IDRjODE4OGYuLjIw
NWFkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKQEAgLTI5LDcg
KzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MQXBwbGV0RWxlbWVudCBm
aW5hbCA6IHB1YmxpYyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxIVE1MQXBwbGV0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEhUTUxBcHBsZXRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCiBwcml2YXRlOgogICAgIEhUTUxBcHBsZXRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAppbmRleCBjYTdkZWM1Li43
OWExMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIGlubGluZSBIVE1MQXJlYUVsZW1lbnQ6OkhUTUxBcmVhRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYKICAgICBBU1NFUlQoaGFzVGFnTmFtZShh
cmVhVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEFyZWFFbGVtZW50PiBIVE1MQXJlYUVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQpCitSZWZQdHI8SFRNTEFyZWFFbGVtZW50PiBIVE1MQXJlYUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MQXJlYUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5oCmluZGV4IDhkYjc1ODkuLmI3YzE1NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBj
bGFzcyBQYXRoOwogCiBjbGFzcyBIVE1MQXJlYUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEFu
Y2hvckVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxBcmVhRWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRp
YyBSZWZQdHI8SFRNTEFyZWFFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CiAKICAgICBib29sIGlzRGVmYXVsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUg
PT0gRGVmYXVsdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRp
b0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcApp
bmRleCA2NTczN2IwLi4zMzNkMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdWRpb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxl
bWVudC5jcHAKQEAgLTM5LDE0ICszOSwxNCBAQCBIVE1MQXVkaW9FbGVtZW50OjpIVE1MQXVkaW9F
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAg
IEFTU0VSVChoYXNUYWdOYW1lKGF1ZGlvVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEF1ZGlv
RWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCitSZWZQdHI8
SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIp
CiB7CiAgICAgUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IGF1ZGlvRWxlbWVudChhZG9wdFJlZihu
ZXcgSFRNTEF1ZGlvRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKSkp
OwogICAgIGF1ZGlvRWxlbWVudC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGF1ZGlv
RWxlbWVudC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGF1ZGlvRWxlbWVudDsKIH0KIAotUGFzc1Jl
ZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0
cnVjdG9yKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBzcmMpCitSZWZQdHI8SFRN
TEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgc3JjKQogewogICAgIFJlZlB0cjxIVE1M
QXVkaW9FbGVtZW50PiBhdWRpbyA9IGFkb3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KGF1ZGlv
VGFnLCBkb2N1bWVudCwgZmFsc2UpKTsKICAgICBhdWRpby0+c2V0UHJlbG9hZCgiYXV0byIpOwpA
QCAtNTUsNyArNTUsNyBAQCBQYXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0Vs
ZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQmCiAgICAgICAgIGF1ZGlvLT5z
Y2hlZHVsZURlbGF5ZWRBY3Rpb24oSFRNTE1lZGlhRWxlbWVudDo6TG9hZE1lZGlhUmVzb3VyY2Up
OwogICAgIH0KICAgICBhdWRpby0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGF1ZGlv
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYXVkaW87CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXVkaW9FbGVtZW50LmgKaW5kZXggNTE4ZDU0ZS4uYTAxZTIxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmgKQEAgLTM2LDggKzM2LDggQEAgY2xhc3MgRG9jdW1lbnQ7
CiAKIGNsYXNzIEhUTUxBdWRpb0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTE1lZGlhRWxlbWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wpOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IGNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1l
bnQmLCBjb25zdCBTdHJpbmcmIHNyYyk7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MQXVkaW9FbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCk7CisgICAg
c3RhdGljIFJlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERv
Y3VtZW50JiwgY29uc3QgU3RyaW5nJiBzcmMpOwogCiBwcml2YXRlOgogICAgIEhUTUxBdWRpb0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCRElFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCRElFbGVtZW50LmgKaW5kZXggZDVlYzRiZi4uZWY4MWM3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQkRJRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJESUVsZW1lbnQuaApAQCAtMjcsNyArMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEhUTUxCRElFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQkRJRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKKyAgICBzdGF0aWMg
UmVmUHRyPEhUTUxCRElFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MQkRJRWxlbWVudChuYW1lLCBkb2N1bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCUkVsZW1lbnQuY3BwCmluZGV4IDYxNzM3MzAuLjVhODQ4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQlJFbGVtZW50LmNwcApAQCAtMzksMTIgKzM5LDEyIEBAIEhUTUxCUkVsZW1lbnQ6OkhU
TUxCUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50KQogICAgIEFTU0VSVChoYXNUYWdOYW1lKGJyVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRN
TEJSRWxlbWVudD4gSFRNTEJSRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK1Jl
ZlB0cjxIVE1MQlJFbGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEJSRWxlbWVudChiclRhZywgZG9j
dW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQlJFbGVtZW50PiBIVE1MQlJFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQor
UmVmUHRyPEhUTUxCUkVsZW1lbnQ+IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MQlJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJSRWxlbWVudC5oCmluZGV4IGI1NDM5YzUuLmQ1OGE2ZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJSRWxlbWVudC5oCkBAIC0zMCw4ICszMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSFRNTEJSRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEJSRWxlbWVudD4gY3JlYXRlKERvY3VtZW50
Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEJSRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEJSRWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MQlJFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIGJv
b2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKaW5kZXggN2U4ZDI3
Ni4uODcyNzE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcApAQCAt
MzksNyArMzksNyBAQCBpbmxpbmUgSFRNTEJhc2VFbGVtZW50OjpIVE1MQmFzZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmCiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoYmFzZVRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxCYXNlRWxlbWVudD4gSFRNTEJhc2VF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQorUmVmUHRyPEhUTUxCYXNlRWxlbWVudD4gSFRNTEJhc2VFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEJhc2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaAppbmRleCBiNzk5ZjFmLi4wZjJk
NTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmgKQEAgLTI5LDcgKzI5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MQmFzZUVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxC
YXNlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAg
IHN0YXRpYyBSZWZQdHI8SFRNTEJhc2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKICAgICBVUkwgaHJlZigpIGNvbnN0OwogICAgIHZvaWQgc2V0SHJl
Zihjb25zdCBBdG9taWNTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJhc2VGb250RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRm9u
dEVsZW1lbnQuY3BwCmluZGV4IDQ5OWY5NGIuLmE0ZmE5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJhc2VGb250RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50LmNwcApAQCAtMzUsNyArMzUsNyBAQCBpbmxpbmUgSFRN
TEJhc2VGb250RWxlbWVudDo6SFRNTEJhc2VGb250RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEbwogICAgIEFTU0VSVChoYXNUYWdOYW1lKGJhc2Vmb250VGFnKSk7CiB9CiAK
LVBhc3NSZWZQdHI8SFRNTEJhc2VGb250RWxlbWVudD4gSFRNTEJhc2VGb250RWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1Jl
ZlB0cjxIVE1MQmFzZUZvbnRFbGVtZW50PiBIVE1MQmFzZUZvbnRFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTEJhc2VGb250RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuaAppbmRleCAzMjhm
NjZmLi5hNGJhZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRm9u
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQu
aApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxCYXNl
Rm9udEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxCYXNlRm9udEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxCYXNlRm9udEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToK
ICAgICBIVE1MQmFzZUZvbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCmluZGV4IDYxM2Q4Y2UuLjU2
NjliNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKQEAgLTQ3LDEy
ICs0NywxMiBAQCBIVE1MQm9keUVsZW1lbnQ6OkhUTUxCb2R5RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbgogICAgIEFTU0VSVChoYXNUYWdOYW1l
KGJvZHlUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IEhUTUxCb2R5RWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MQm9keUVsZW1lbnQ+
IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxCb2R5RWxlbWVudChib2R5VGFnLCBkb2N1bWVudCkpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxCb2R5RWxlbWVudD4gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhU
TUxCb2R5RWxlbWVudD4gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTEJvZHlFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQm9keUVsZW1lbnQuaAppbmRleCAwZDRkNjBhLi4wNmMyZmI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJvZHlFbGVtZW50LmgKQEAgLTMyLDggKzMyLDggQEAgY2xhc3MgRG9jdW1lbnQ7
CiAKIGNsYXNzIEhUTUxCb2R5RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEJvZHlFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxC
b2R5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MQm9k
eUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2
aXJ0dWFsIH5IVE1MQm9keUVsZW1lbnQoKTsKIAogICAgIC8vIERlY2xhcmVkIHZpcnR1YWwgaW4g
RWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAppbmRleCBl
NWM0MTA0Li5hMWZmNDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0
b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgSFRNTEJ1dHRvbkVsZW1lbnQ6OkhUTUxCdXR0
b25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZQogICAgIEFTU0VS
VChoYXNUYWdOYW1lKGJ1dHRvblRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxCdXR0b25FbGVt
ZW50PiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQorUmVmUHRyPEhU
TUxCdXR0b25FbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3Jt
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEJ1dHRvbkVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQsIGZvcm0pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJ1dHRvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQu
aAppbmRleCAxZTAxZWM4Li5hYzY4N2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxCdXR0b25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9u
RWxlbWVudC5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
SFRNTEJ1dHRvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEJ1dHRvbkVsZW1lbnQ+IGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEhUTUxCdXR0b25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKICAgICB2b2lkIHNldFR5cGUo
Y29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwCmluZGV4IDgyMDM2NTEuLjg0ODg4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC04NiwxMiArODYsMTIgQEAgSFRNTENhbnZhc0Vs
ZW1lbnQ6OkhUTUxDYW52YXNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiBkb2MKICAgICBBU1NFUlQoaGFzVGFnTmFtZShjYW52YXNUYWcpKTsKIH0KIAotUGFz
c1JlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IEhUTUxDYW52YXNFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTENhbnZhc0VsZW1lbnQoY2FudmFzVGFnLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVm
UHRyPEhUTUxDYW52YXNFbGVtZW50PiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MQ2Fu
dmFzRWxlbWVudD4gSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MQ2FudmFzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpAQCAtNDY2LDcgKzQ2
Niw3IEBAIFN0cmluZyBIVE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0CiAgICAgcmV0dXJuIGJ1ZmZlcigpLT50b0Rh
dGFVUkwoZW5jb2RpbmdNaW1lVHlwZSwgcXVhbGl0eSk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2VE
YXRhPiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0SW1hZ2VEYXRhKCkKK1JlZlB0cjxJbWFnZURhdGE+
IEhUTUxDYW52YXNFbGVtZW50OjpnZXRJbWFnZURhdGEoKQogewogI2lmIEVOQUJMRShXRUJHTCkK
ICAgICBpZiAoIWlzM0QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaApp
bmRleCA4YWJkZTc3Li5mZmRhNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5oCkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzoKIAogY2xhc3MgSFRNTENhbnZhc0VsZW1l
bnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IGNyZWF0
ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5IVE1MQ2Fu
dmFzRWxlbWVudCgpOwogCiAgICAgdm9pZCBhZGRPYnNlcnZlcihDYW52YXNPYnNlcnZlciYpOwpA
QCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBJbWFnZUJ1ZmZlciogYnVmZmVyKCkgY29u
c3Q7CiAgICAgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhckNvcGll
ZEltYWdlKCk7Ci0gICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YSgpOworICAg
IFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YSgpOwogICAgIHZvaWQgbWFrZVByZXNlbnRh
dGlvbkNvcHkoKTsKICAgICB2b2lkIGNsZWFyUHJlc2VudGF0aW9uQ29weSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxETGlzdEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmNwcAppbmRleCAwMGQzMmNkLi4xMTQ0NjY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxETGlzdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAKQEAgLTM1LDcgKzM1LDcg
QEAgaW5saW5lIEhUTUxETGlzdEVsZW1lbnQ6OkhUTUxETGlzdEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQKICAgICBBU1NFUlQoaGFzVGFnTmFtZShkbFRhZykp
OwogfQogCi1QYXNzUmVmUHRyPEhUTUxETGlzdEVsZW1lbnQ+IEhUTUxETGlzdEVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitS
ZWZQdHI8SFRNTERMaXN0RWxlbWVudD4gSFRNTERMaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxETGlzdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmgKaW5kZXggYTExYWM1Yy4uZDgzOTc3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRExpc3RFbGVtZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRExpc3RFbGVtZW50IGZpbmFsIDogcHVi
bGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRExp
c3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAg
c3RhdGljIFJlZlB0cjxIVE1MRExpc3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTERMaXN0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRh
TGlzdEVsZW1lbnQuY3BwCmluZGV4IDFjMDNmMWMuLmNjOTc1NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIGlubGlu
ZSBIVE1MRGF0YUxpc3RFbGVtZW50OjpIVE1MRGF0YUxpc3RFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvCiB7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVu
dD4gSFRNTERhdGFMaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MRGF0YUxpc3RFbGVtZW50PiBIVE1M
RGF0YUxpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERhdGFMaXN0
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiBIVE1MRGF0YUxpc3RFbGVtZW50OjpvcHRpb25zKCkKK1JlZlB0cjxIVE1MQ29sbGVjdGlv
bj4gSFRNTERhdGFMaXN0RWxlbWVudDo6b3B0aW9ucygpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZEhUTUxDb2xsZWN0aW9uKERhdGFMaXN0T3B0aW9ucyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oCmluZGV4IGNmMWQzZmYuLjIxNjlhYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oCkBAIC00MCw5ICs0MCw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTERhdGFMaXN0RWxlbWVudCBmaW5hbCA6IHB1
YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERh
dGFMaXN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4g
b3B0aW9ucygpOworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9ucygpOwogCiAgICAg
dm9pZCBvcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAppbmRleCAyM2U1NjFjLi5hMzViNWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC00Miw3ICs0Miw3IEBA
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1hcnlRdWVyeVNlbGVjdG9yKCkKIAogY2xh
c3MgRGV0YWlsc0NvbnRlbnRFbGVtZW50IGZpbmFsIDogcHVibGljIEluc2VydGlvblBvaW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZXRhaWxzQ29udGVudEVsZW1lbnQ+IGNy
ZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBEZXRhaWxzQ29udGVudEVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNTgsMTQgKzU4LDE0IEBAIHByaXZhdGU6CiAgICAg
fQogfTsKIAotUGFzc1JlZlB0cjxEZXRhaWxzQ29udGVudEVsZW1lbnQ+IERldGFpbHNDb250ZW50
RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxEZXRhaWxzQ29udGVu
dEVsZW1lbnQ+IERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERldGFpbHNDb250ZW50RWxlbWVudChkb2N1
bWVudCkpOwogfQogCiBjbGFzcyBEZXRhaWxzU3VtbWFyeUVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
SW5zZXJ0aW9uUG9pbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERldGFpbHNT
dW1tYXJ5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxEZXRh
aWxzU3VtbWFyeUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogCiAgICAgRWxlbWVudCogZmFs
bGJhY2tTdW1tYXJ5KCkKICAgICB7CkBAIC04NywyMSArODcsMjEgQEAgcHJpdmF0ZToKICAgICB9
CiB9OwogCi1QYXNzUmVmUHRyPERldGFpbHNTdW1tYXJ5RWxlbWVudD4gRGV0YWlsc1N1bW1hcnlF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPERldGFpbHNTdW1tYXJ5
RWxlbWVudD4gRGV0YWlsc1N1bW1hcnlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
KQogewogICAgIFJlZlB0cjxIVE1MU3VtbWFyeUVsZW1lbnQ+IHN1bW1hcnkgPSBIVE1MU3VtbWFy
eUVsZW1lbnQ6OmNyZWF0ZShzdW1tYXJ5VGFnLCBkb2N1bWVudCk7CiAgICAgc3VtbWFyeS0+YXBw
ZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBkZWZhdWx0RGV0YWlsc1N1bW1hcnlUZXh0
KCkpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAogICAgIFJlZlB0cjxEZXRhaWxzU3VtbWFyeUVs
ZW1lbnQ+IGRldGFpbHNTdW1tYXJ5ID0gYWRvcHRSZWYobmV3IERldGFpbHNTdW1tYXJ5RWxlbWVu
dChkb2N1bWVudCkpOwogICAgIGRldGFpbHNTdW1tYXJ5LT5hcHBlbmRDaGlsZChzdW1tYXJ5KTsK
LSAgICByZXR1cm4gZGV0YWlsc1N1bW1hcnkucmVsZWFzZSgpOworICAgIHJldHVybiBkZXRhaWxz
U3VtbWFyeTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRGV0YWlsc0VsZW1lbnQ+IEhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKK1JlZlB0cjxIVE1MRGV0YWlsc0VsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkK
IHsKICAgICBSZWZQdHI8SFRNTERldGFpbHNFbGVtZW50PiBkZXRhaWxzID0gYWRvcHRSZWYobmV3
IEhUTUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogICAgIGRldGFpbHMtPmVu
c3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICByZXR1cm4gZGV0YWlscy5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKIEhUTUxEZXRhaWxzRWxlbWVudDo6SFRNTERldGFp
bHNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCmluZGV4IDA3M2NkNTku
LjY3MjU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaApAQCAt
MjcsNyArMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxEZXRhaWxzRWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SFRNTERldGFpbHNFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxEZXRh
aWxzRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCk7CiAgICAgdm9pZCB0b2dnbGVPcGVuKCk7CiAKICAgICBjb25zdCBFbGVtZW50
KiBmaW5kTWFpblN1bW1hcnkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGly
ZWN0b3J5RWxlbWVudC5jcHAKaW5kZXggNWMzZDE1ZS4uNzc1MTQxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgaW5s
aW5lIEhUTUxEaXJlY3RvcnlFbGVtZW50OjpIVE1MRGlyZWN0b3J5RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLAogICAgIEFTU0VSVChoYXNUYWdOYW1lKGRpclRhZykpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxEaXJlY3RvcnlFbGVtZW50PiBIVE1MRGlyZWN0b3J5RWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkK
K1JlZlB0cjxIVE1MRGlyZWN0b3J5RWxlbWVudD4gSFRNTERpcmVjdG9yeUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRGlyZWN0b3J5RWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGlyZWN0b3J5RWxlbWVudC5oCmlu
ZGV4IGYxNzU5YWYuLjUzMWFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERpcmVjdG9yeUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXJlY3Rv
cnlFbGVtZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBIVE1MRGlyZWN0b3J5RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERpcmVjdG9yeUVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQ
dHI8SFRNTERpcmVjdG9yeUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIEhUTUxEaXJlY3RvcnlFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGl2RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZF
bGVtZW50LmNwcAppbmRleCBhOWFjMGJmLi5iZmNkNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEaXZFbGVtZW50LmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIEhUTUxEaXZFbGVtZW50OjpIVE1M
RGl2RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGl2VGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRN
TERpdkVsZW1lbnQ+IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQor
UmVmUHRyPEhUTUxEaXZFbGVtZW50PiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEaXZFbGVtZW50KGRpdlRh
ZywgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRGl2RWxlbWVudD4gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCitSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTERpdkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAppbmRleCBmZjgxYjliLi40NTQwZWYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5oCkBAIC0yOSw4ICsyOSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTERpdkVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1l
bnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBjcmVh
dGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRGl2RWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8
SFRNTERpdkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRN
TERpdkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAog
cHJvdGVjdGVkOgogICAgIEhUTUxEaXZFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IDU4Mzc0ODIuLmE2
OTNlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTIyNCw3ICsyMjQs
NyBAQCB2b2lkIEhUTUxEb2N1bWVudDo6cmVsZWFzZUV2ZW50cygpCiB7CiB9CiAKLVBhc3NSZWZQ
dHI8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKK1JlZlB0cjxE
b2N1bWVudFBhcnNlcj4gSFRNTERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogewogICAgIHJldHVy
biBIVE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CkBAIC0yMzMsNyArMjMzLDcg
QEAgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gSFRNTERvY3VtZW50OjpjcmVhdGVQYXJzZXIo
KQogLy8gbm90IHBhcnQgb2YgdGhlIERPTQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUGFzc1Jl
ZlB0cjxFbGVtZW50PiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxFbGVtZW50PiBIVE1MRG9jdW1l
bnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBpZiAoIWlzVmFsaWROYW1lKG5hbWUpKSB7CiAgICAgICAgIGVjID0gSU5W
QUxJRF9DSEFSQUNURVJfRVJSOwpAQCAtMzQyLDcgKzM0Miw3IEBAIGJvb2wgSFRNTERvY3VtZW50
Ojppc0ZyYW1lU2V0KCkgY29uc3QKICAgICByZXR1cm4gaXM8SFRNTEZyYW1lU2V0RWxlbWVudD4o
Ym9keSgpKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudD4gSFRNTERvY3VtZW50OjpjbG9uZURv
Y3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QKK1JlZlB0cjxEb2N1bWVudD4gSFRNTERvY3Vt
ZW50OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QKIHsKICAgICByZXR1cm4g
Y3JlYXRlKG51bGxwdHIsIHVybCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCmlu
ZGV4IGE2NWMzNzkuLjllOWFhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaApAQCAt
MzEsMTIgKzMxLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTERvY3VtZW50
IDogcHVibGljIERvY3VtZW50LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZlB0cjxIVE1MRG9jdW1lbnQ+IGNyZWF0
ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgSFRNTERvY3VtZW50Q2xhc3MpKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZVN5bnRo
ZXNpemVkRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0aWMg
UmVmUHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudChGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgSFRNTERvY3VtZW50Q2xhc3MsIFN5bnRoZXNpemVkKSk7
CiAgICAgfQpAQCAtODYsMTIgKzg2LDExIEBAIHByb3RlY3RlZDoKICAgICBIVE1MRG9jdW1lbnQo
RnJhbWUqLCBjb25zdCBVUkwmLCBEb2N1bWVudENsYXNzRmxhZ3MgPSAwLCB1bnNpZ25lZCBjb25z
dHJ1Y3Rpb25GbGFncyA9IDApOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxF
bGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0
aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJp
ZGU7Ci0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNsb25lRG9jdW1lbnRXaXRo
b3V0Q2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxE
b2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQ
dHI8RG9jdW1lbnQ+IGNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKIAogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2RvY3VtZW50TmFtZWRJdGVtOwog
ICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX3dpbmRvd05hbWVkSXRlbTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKaW5kZXggY2E1ZWUwOS4uZDhjZDA4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKLVBhc3NSZWZQ
dHI8SFRNTEVsZW1lbnQ+IEhUTUxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0
ZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIG1l
cmdlV2l0aE5leHRUZXh0Tm9kZShkb3duY2FzdDxUZXh0PigqcHJldiksIGVjKTsKIH0KIAotUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBIVE1MRWxlbWVudDo6dGV4dFRvRnJhZ21lbnQoY29u
c3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBIVE1MRWxlbWVudDo6dGV4dFRvRnJhZ21lbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgdW5zaWduZWQgaW50
IGksIGxlbmd0aCA9IHRleHQubGVuZ3RoKCk7CkBAIC04MzcsNyArODM3LDcgQEAgdm9pZCBIVE1M
RWxlbWVudDo6c2V0VHJhbnNsYXRlKGJvb2wgZW5hYmxlKQogICAgIHNldEF0dHJpYnV0ZSh0cmFu
c2xhdGVBdHRyLCBlbmFibGUgPyAieWVzIiA6ICJubyIpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxD
b2xsZWN0aW9uPiBIVE1MRWxlbWVudDo6Y2hpbGRyZW4oKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiBIVE1MRWxlbWVudDo6Y2hpbGRyZW4oKQogewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1M
Q29sbGVjdGlvbihOb2RlQ2hpbGRyZW4pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmlu
ZGV4IDc5Mzc3ZDYuLjZiNDg0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTQw
LDkgKzQwLDkgQEAgZW51bSBUcmFuc2xhdGVBdHRyaWJ1dGVNb2RlIHsKIAogY2xhc3MgSFRNTEVs
ZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCi0gICAgUGFzc1JlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gY2hpbGRyZW4oKTsKKyAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNoaWxk
cmVuKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOwogCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVhbEZvcm0oKSBjb25zdDsKIAogICAgIE5vZGUqIGlu
c2VydEFkamFjZW50KGNvbnN0IFN0cmluZyYgd2hlcmUsIE5vZGUqIG5ld0NoaWxkLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiB0ZXh0VG9GcmFnbWVu
dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IHRleHRUb0ZyYWdtZW50KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAog
ICAgIHZvaWQgZGlyQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICB2
b2lkIGFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkQXR0cmlidXRlQ2hhbmdl
ZChFbGVtZW50KiBjaGlsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNw
cAppbmRleCA1OTM4MTczLi44NDkxYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVk
RWxlbWVudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgaW5saW5lIEhUTUxFbWJlZEVsZW1lbnQ6OkhU
TUxFbWJlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShlbWJlZFRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxFbWJl
ZEVsZW1lbnQ+IEhUTUxFbWJlZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQorUmVmUHRy
PEhUTUxFbWJlZEVsZW1lbnQ+IEhUTUxFbWJlZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEVtYmVkRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVk
RWxlbWVudC5oCmluZGV4IGIyZTY2MGYuLmJhYmNiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVtYmVkRWxlbWVudC5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSFRNTEVtYmVkRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRW1iZWRFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEVtYmVkRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAogcHJpdmF0
ZToKICAgICBIVE1MRW1iZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYs
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNl
dEVsZW1lbnQuY3BwCmluZGV4IDJmZTRhNjIuLjAxZGRmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcApAQCAtNTAsNyArNTAsNyBAQCBIVE1MRmllbGRT
ZXRFbGVtZW50Ojp+SFRNTEZpZWxkU2V0RWxlbWVudCgpCiAgICAgICAgIGRvY3VtZW50KCkucmVt
b3ZlRGlzYWJsZWRGaWVsZHNldEVsZW1lbnQoKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRmllbGRT
ZXRFbGVtZW50PiBIVE1MRmllbGRTZXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCitS
ZWZQdHI8SFRNTEZpZWxkU2V0RWxlbWVudD4gSFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1F
bGVtZW50KiBmb3JtKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZpZWxkU2V0RWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQpAQCAtMTU5LDcgKzE1OSw3IEBAIEhU
TUxMZWdlbmRFbGVtZW50KiBIVE1MRmllbGRTZXRFbGVtZW50OjpsZWdlbmQoKSBjb25zdAogICAg
IHJldHVybiBjb25zdF9jYXN0PEhUTUxMZWdlbmRFbGVtZW50Kj4oY2hpbGRyZW5PZlR5cGU8SFRN
TExlZ2VuZEVsZW1lbnQ+KCp0aGlzKS5maXJzdCgpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29s
bGVjdGlvbj4gSFRNTEZpZWxkU2V0RWxlbWVudDo6ZWxlbWVudHMoKQorUmVmUHRyPEhUTUxDb2xs
ZWN0aW9uPiBIVE1MRmllbGRTZXRFbGVtZW50OjplbGVtZW50cygpCiB7CiAgICAgcmV0dXJuIGVu
c3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKEZvcm1Db250cm9scyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCmluZGV4IDQwMTA0MGEuLmUxNzUwZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCkBAIC0zNCwxMCArMzQsMTAg
QEAgY2xhc3MgSFRNTENvbGxlY3Rpb247CiAKIGNsYXNzIEhUTUxGaWVsZFNldEVsZW1lbnQgZmlu
YWwgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTEZpZWxkU2V0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOworICAgIHN0YXRpYyBSZWZQdHI8SFRN
TEZpZWxkU2V0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYs
IEhUTUxGb3JtRWxlbWVudCopOwogCiAgICAgSFRNTExlZ2VuZEVsZW1lbnQqIGxlZ2VuZCgpIGNv
bnN0OwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGVsZW1lbnRzKCk7CisgICAgUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiBlbGVtZW50cygpOwogCiAgICAgY29uc3QgVmVjdG9yPEZvcm1B
c3NvY2lhdGVkRWxlbWVudCo+JiBhc3NvY2lhdGVkRWxlbWVudHMoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNw
cAppbmRleCA3ZDI3ZmZkLi5jMGRlNGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb250RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVs
ZW1lbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEhUTUxGb250RWxlbWVudDo6SFRNTEZvbnRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVuCiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoZm9udFRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxGb250RWxl
bWVudD4gSFRNTEZvbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxGb250RWxlbWVudD4gSFRNTEZvbnRF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZvbnRFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b250RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaAppbmRl
eCBlNWMzZGFhLi4xOTQwZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b250RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmgK
QEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRm9udEVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxGb250RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZvbnRFbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCiAgICAgc3RhdGljIGJvb2wgY3Nz
VmFsdWVGcm9tRm9udFNpemVOdW1iZXIoY29uc3QgU3RyaW5nJiwgQ1NTVmFsdWVJRCYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggZTM0OTdlZS4uNWNiZGI0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNzEsMTIgKzcx
LDEyIEBAIEhUTUxGb3JtRWxlbWVudDo6SFRNTEZvcm1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZm9y
bVRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSFRNTEZvcm1FbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSFRN
TEZvcm1FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTEZvcm1FbGVtZW50KGZvcm1UYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBh
c3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBIVE1MRm9ybUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTEZv
cm1FbGVtZW50PiBIVE1MRm9ybUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MRm9ybUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KQEAgLTY0MCw3ICs2NDAsNyBA
QCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlSW1nRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50
KiBlKQogICAgIHJlbW92ZUZyb21WZWN0b3IobV9pbWFnZUVsZW1lbnRzLCBlKTsKIH0KIAotUGFz
c1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTEZvcm1FbGVtZW50OjplbGVtZW50cygpCitSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IEhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudHMoKQogewogICAgIHJl
dHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihGb3JtQ29udHJvbHMpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXggOGNiZTkyMC4uMzhhYWI0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBAIC00NiwxMSArNDYsMTEgQEAgY2xhc3Mg
VGV4dEVuY29kaW5nOwogCiBjbGFzcyBIVE1MRm9ybUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRN
TEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGlj
IFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBS
ZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Jik7CiAgICAgdmlydHVhbCB+SFRNTEZvcm1FbGVtZW50KCk7CiAKLSAgICBQYXNzUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPiBlbGVtZW50cygpOworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4g
ZWxlbWVudHMoKTsKICAgICBib29sIGhhc05hbWVkRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcm
KTsKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEVsZW1lbnRzKGNvbnN0IEF0b21pY1N0
cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAppbmRleCA1
N2NmODIwLi5kNjU1ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgaW5saW5lIEhUTUxGcmFtZUVsZW1lbnQ6OkhUTUxGcmFtZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQKICAgICBzZXRIYXND
dXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRnJhbWVF
bGVtZW50PiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxGcmFtZUVsZW1lbnQ+IEhUTUxG
cmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRnJhbWVFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dC5oCmluZGV4IGIyOGU3NjQuLmQ0ZDYxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudC5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
SFRNTEZyYW1lRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRnJhbWVFbGVtZW50QmFzZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZyYW1lRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZy
YW1lRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAg
ICAgYm9vbCBoYXNGcmFtZUJvcmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVCb3JkZXI7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggN2E0
ZDAyYi4uMmI0MTRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1l
bnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEhUTUxGcmFtZVNldEVsZW1lbnQ6OkhUTUxGcmFtZVNl
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmCiAgICAgc2V0
SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEZy
YW1lU2V0RWxlbWVudD4gSFRNTEZyYW1lU2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MRnJhbWVTZXRF
bGVtZW50PiBIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTEZyYW1lU2V0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAppbmRleCAyNzI5MzhjLi5hM2IyNzE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaApAQCAtMzEsNyArMzEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxGcmFtZVNldEVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhU
TUxGcmFtZVNldEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxGcmFtZVNldEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIGJvb2wgaGFzRnJhbWVCb3JkZXIoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lYm9yZGVyOyB9CiAgICAgYm9vbCBub1Jlc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbm9yZXNpemU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEhSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3Bw
CmluZGV4IDFiN2JlN2MuLjYwYTFkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEhSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50
LmNwcApAQCAtNDAsMTIgKzQwLDEyIEBAIEhUTUxIUkVsZW1lbnQ6OkhUTUxIUkVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIEFTU0VS
VChoYXNUYWdOYW1lKGhyVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gSFRN
TEhSRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MSFJFbGVt
ZW50PiBIVE1MSFJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTEhSRWxlbWVudChoclRhZywgZG9jdW1lbnQpKTsKIH0KIAot
UGFzc1JlZlB0cjxIVE1MSFJFbGVtZW50PiBIVE1MSFJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxIUkVs
ZW1lbnQ+IEhUTUxIUkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSFJF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxIUkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVu
dC5oCmluZGV4IDE1YmIyYTUuLjQ0MmY0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEhSRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVu
dC5oCkBAIC0yOSw4ICsyOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTEhS
RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEhSRWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MSFJFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEhSRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhl
YWRFbGVtZW50LmNwcAppbmRleCAwOTRmZjNjLi44YTQ1ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxIZWFkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSGVhZEVsZW1lbnQuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAgSFRNTEhlYWRFbGVtZW50
OjpIVE1MSGVhZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShoZWFkVGFnKSk7CiB9CiAKLVBhc3NSZWZQ
dHI8SFRNTEhlYWRFbGVtZW50PiBIVE1MSGVhZEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQpCitSZWZQdHI8SFRNTEhlYWRFbGVtZW50PiBIVE1MSGVhZEVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSGVhZEVs
ZW1lbnQoaGVhZFRhZywgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MSGVhZEVsZW1l
bnQ+IEhUTUxIZWFkRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MSGVhZEVsZW1lbnQ+IEhUTUxIZWFkRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxIZWFkRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVh
ZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmgKaW5kZXgg
YWFmZmUxMC4uMmFhODczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVh
ZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkRWxlbWVudC5oCkBA
IC0zMCw4ICszMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTEhlYWRFbGVt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxIVE1MSGVhZEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxIZWFkRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEhlYWRFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxIZWFkRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIEhUTUxIZWFkRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcAppbmRleCA0N2VjNjYzLi5kZWRjZGNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBA
IGlubGluZSBIVE1MSGVhZGluZ0VsZW1lbnQ6OkhUTUxIZWFkaW5nRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1CiB7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEhlYWRpbmdF
bGVtZW50PiBIVE1MSGVhZGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTEhlYWRpbmdFbGVtZW50PiBI
VE1MSGVhZGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSGVhZGlu
Z0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxI
ZWFkaW5nRWxlbWVudC5oCmluZGV4IGY3NWZmZTcuLmM5YzkxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEhUTUxIZWFkaW5nRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxl
bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEhlYWRpbmdFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJl
ZlB0cjxIVE1MSGVhZGluZ0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBIVE1MSGVhZGluZ0VsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxIdG1sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5j
cHAKaW5kZXggOWU0MWQzMS4uNzgzZTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSHRtbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxF
bGVtZW50LmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIEhUTUxIdG1sRWxlbWVudDo6SFRNTEh0bWxF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVuCiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoaHRtbFRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxIdG1s
RWxlbWVudD4gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVm
UHRyPEhUTUxIdG1sRWxlbWVudD4gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEh0bWxFbGVtZW50KGh0bWxU
YWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEh0bWxFbGVtZW50PiBIVE1MSHRt
bEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCitSZWZQdHI8SFRNTEh0bWxFbGVtZW50PiBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSHRtbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5oCmluZGV4IDBmODNiOWEuLjU0
OWUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuaApAQCAtMzAsOCArMzAs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxIdG1sRWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TEh0bWxFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
VE1MSHRtbEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEhUTUxIdG1sRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Cisg
ICAgc3RhdGljIFJlZlB0cjxIVE1MSHRtbEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgaW5zZXJ0ZWRCeVBhcnNlcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDM1YTU2ZjMuLmFmYTc1
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC00Myw3
ICs0Myw3IEBAIGlubGluZSBIVE1MSUZyYW1lRWxlbWVudDo6SFRNTElGcmFtZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
aWZyYW1lVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTElGcmFtZUVsZW1lbnQ+IEhUTUxJRnJh
bWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50KQorUmVmUHRyPEhUTUxJRnJhbWVFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxJRnJhbWVFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKaW5kZXgg
ZjBlYmNlYy4uOWFhYWMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQu
aApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJRnJh
bWVFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxGcmFtZUVsZW1lbnRCYXNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSUZyYW1lRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTElGcmFtZUVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogcHJpdmF0
ZToKICAgICBIVE1MSUZyYW1lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDk5OTlmNmIu
LjJkOWJiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAt
NjUsMTIgKzY1LDEyIEBAIEhUTUxJbWFnZUVsZW1lbnQ6OkhUTUxJbWFnZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgICAgIGZvcm0tPnJl
Z2lzdGVySW1nRWxlbWVudCh0aGlzKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MSW1hZ2VFbGVtZW50
PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhU
TUxJbWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSW1hZ2VFbGVtZW50KGltZ1RhZywg
ZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCitSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4g
SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTEltYWdlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwog
fQpAQCAtODEsNyArODEsNyBAQCBIVE1MSW1hZ2VFbGVtZW50Ojp+SFRNTEltYWdlRWxlbWVudCgp
CiAgICAgICAgIG1fZm9ybS0+cmVtb3ZlSW1nRWxlbWVudCh0aGlzKTsKIH0KIAotUGFzc1JlZlB0
cjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVj
dG9yKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgaW50KiBvcHRpb25hbFdpZHRoLCBjb25zdCBp
bnQqIG9wdGlvbmFsSGVpZ2h0KQorUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVs
ZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBp
bnQqIG9wdGlvbmFsV2lkdGgsIGNvbnN0IGludCogb3B0aW9uYWxIZWlnaHQpCiB7CiAgICAgUmVm
UHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gYWRvcHRSZWYobmV3IEhUTUxJbWFnZUVsZW1l
bnQoaW1nVGFnLCBkb2N1bWVudCkpOwogICAgIGlmIChvcHRpb25hbFdpZHRoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA5OWZlMjViLi5mZDVlMWIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtMzcsOSArMzcsOSBAQCBzdHJ1Y3Qg
SW1hZ2VDYW5kaWRhdGU7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50IDogcHVibGljIEhUTUxFbGVt
ZW50LCBwdWJsaWMgRm9ybU5hbWVkSXRlbSB7CiAgICAgZnJpZW5kIGNsYXNzIEhUTUxGb3JtRWxl
bWVudDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBj
cmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSW1hZ2VFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50
Kik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRlRm9ySlND
b25zdHJ1Y3RvcihEb2N1bWVudCYsIGNvbnN0IGludCogb3B0aW9uYWxXaWR0aCwgY29uc3QgaW50
KiBvcHRpb25hbEhlaWdodCk7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBj
cmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGNyZWF0ZUZvckpTQ29uc3RydWN0
b3IoRG9jdW1lbnQmLCBjb25zdCBpbnQqIG9wdGlvbmFsV2lkdGgsIGNvbnN0IGludCogb3B0aW9u
YWxIZWlnaHQpOwogCiAgICAgdmlydHVhbCB+SFRNTEltYWdlRWxlbWVudCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA1M2Q4Njc5Li45NzJhYzViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTEyOSwxMyArMTI5
LDEzIEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNv
bHZlQ2FsbGJhY2tzKCk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gSFRNTElu
cHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBib29sIGNyZWF0ZWRCeVBhcnNlcikK
K1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1l
bnQqIGZvcm0sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIGJvb2wgc2hvdWxkQ3JlYXRl
U2hhZG93Um9vdExhemlseSA9IGNyZWF0ZWRCeVBhcnNlcjsKICAgICBSZWZQdHI8SFRNTElucHV0
RWxlbWVudD4gaW5wdXRFbGVtZW50ID0gYWRvcHRSZWYobmV3IEhUTUxJbnB1dEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBhcnNlcikpOwogICAgIGlmICghc2hvdWxk
Q3JlYXRlU2hhZG93Um9vdExhemlseSkKICAgICAgICAgaW5wdXRFbGVtZW50LT5lbnN1cmVVc2Vy
QWdlbnRTaGFkb3dSb290KCk7Ci0gICAgcmV0dXJuIGlucHV0RWxlbWVudC5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIGlucHV0RWxlbWVudDsKIH0KIAogSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRF
bGVtZW50OjplbnN1cmVJbWFnZUxvYWRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCmluZGV4IGVjMGYzNjUuLjNmZTU3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHN0cnVjdCBJbnB1dEVsZW1lbnRDbGlja1N0
YXRlIHsKIAogY2xhc3MgSFRNTElucHV0RWxlbWVudCA6IHB1YmxpYyBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTElucHV0RWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxl
bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxJbnB1
dEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9y
bUVsZW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAgdmlydHVhbCB+SFRNTElucHV0
RWxlbWVudCgpOwogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRz
cGVlY2hjaGFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2Vu
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcApp
bmRleCAxZjVkNjdmLi44NmY5YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxLZXlnZW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5F
bGVtZW50LmNwcApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
CiBjbGFzcyBLZXlnZW5TZWxlY3RFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxTZWxlY3RFbGVt
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxLZXlnZW5TZWxlY3RFbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIHN0YXRpYyBSZWZQdHI8S2V5Z2VuU2Vs
ZWN0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgS2V5Z2VuU2VsZWN0RWxlbWVudChkb2N1bWVudCkpOwogICAgIH0K
QEAgLTU4LDcgKzU4LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRD
aGlsZHJlbigpIG92ZXJyaWRlCisgICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVt
ZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCkpOwogICAgIH0KQEAgLTgzLDcgKzgzLDcgQEAgaW5s
aW5lIEhUTUxLZXlnZW5FbGVtZW50OjpIVE1MS2V5Z2VuRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWUKICAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCkuYXBw
ZW5kQ2hpbGQoc2VsZWN0LCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1M
S2V5Z2VuRWxlbWVudD4gSFRNTEtleWdlbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkK
K1JlZlB0cjxIVE1MS2V5Z2VuRWxlbWVudD4gSFRNTEtleWdlbkVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxl
bWVudCogZm9ybSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxLZXlnZW5FbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXln
ZW5FbGVtZW50LmgKaW5kZXggMWQyMDhmOC4uZjgwNWJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEtleWdlbkVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBIVE1MU2VsZWN0RWxl
bWVudDsKIAogY2xhc3MgSFRNTEtleWdlbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTEtleWdlbkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
LCBIVE1MRm9ybUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxLZXlnZW5FbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50
Kik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEtleWdlbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElF
bGVtZW50LmNwcAppbmRleCA4MjdiMzYxLi40ODYzMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExJRWxlbWVudC5jcHAKQEAgLTQxLDEyICs0MSwxMiBAQCBIVE1MTElFbGVtZW50OjpIVE1MTElF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKIH0KIAotUGFzc1JlZlB0
cjxIVE1MTElFbGVtZW50PiBIVE1MTElFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
KQorUmVmUHRyPEhUTUxMSUVsZW1lbnQ+IEhUTUxMSUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTElFbGVtZW50KGxpVGFn
LCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxMSUVsZW1lbnQ+IEhUTUxMSUVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQpCitSZWZQdHI8SFRNTExJRWxlbWVudD4gSFRNTExJRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxMSUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTElFbGVtZW50LmgKaW5kZXggZTc2MTMwMC4uM2MyZWFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTElFbGVtZW50LmgKQEAgLTI5LDggKzI5LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIVE1MTElFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTElFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTElFbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MTElF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxMSUVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToK
ICAgICBIVE1MTElFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKaW5kZXggMmUxOTg4OS4uNmVjZjA1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCkBAIC01MCw3ICs1
MCw3IEBAIGlubGluZSBIVE1MTGFiZWxFbGVtZW50OjpIVE1MTGFiZWxFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobGFi
ZWxUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MTGFiZWxFbGVtZW50PiBIVE1MTGFiZWxFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50KQorUmVmUHRyPEhUTUxMYWJlbEVsZW1lbnQ+IEhUTUxMYWJlbEVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTGFiZWxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5oCmluZGV4IGNhOGVlNjAuLjQ3
MzU3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5oCkBAIC0zMSw3ICsz
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTExhYmVsRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTExhYmVsRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OworICAgIHN0YXRpYyBSZWZQdHI8SFRNTExhYmVsRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgTGFiZWxhYmxlRWxlbWVudCogY29udHJvbCgp
OwogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMZWdlbmRFbGVtZW50LmNwcAppbmRleCBhMTk3YzIxLi5lYWY5YjFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBpbmxp
bmUgSFRNTExlZ2VuZEVsZW1lbnQ6OkhUTUxMZWdlbmRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZQogICAgIEFTU0VSVChoYXNUYWdOYW1lKGxlZ2VuZFRhZykpOwog
fQogCi1QYXNzUmVmUHRyPEhUTUxMZWdlbmRFbGVtZW50PiBIVE1MTGVnZW5kRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1Jl
ZlB0cjxIVE1MTGVnZW5kRWxlbWVudD4gSFRNTExlZ2VuZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIVE1MTGVnZW5kRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5oCmluZGV4IDkxMDRhYmQuLmZhMzg4
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmgKQEAgLTMyLDcgKzMy
LDcgQEAgY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudDsKIAogY2xhc3MgSFRNTExlZ2VuZEVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxMZWdlbmRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MTGVnZW5kRWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIEhUTUxM
ZWdlbmRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDY5NjQxZjEuLjVhODdhN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgaW5s
aW5lIEhUTUxMaW5rRWxlbWVudDo6SFRNTExpbmtFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JgogICAgIEFTU0VSVChoYXNUYWdOYW1lKGxpbmtUYWcpKTsKIH0K
IAotUGFzc1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IEhUTUxMaW5rRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIpCitSZWZQdHI8SFRNTExpbmtFbGVtZW50PiBIVE1MTGlua0VsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJv
b2wgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTExpbmtF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmluZGV4IDMyMTNlYmYuLjk2MWNjNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAtNDUsNyArNDUsNyBAQCB0eXBlZGVmIEV2
ZW50U2VuZGVyPEhUTUxMaW5rRWxlbWVudD4gTGlua0V2ZW50U2VuZGVyOwogCiBjbGFzcyBIVE1M
TGlua0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBDYWNoZWRTdHls
ZVNoZWV0Q2xpZW50LCBwdWJsaWMgTGlua0xvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTExpbmtFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHN0YXRpYyBSZWZQdHI8
SFRNTExpbmtFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jiwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZpcnR1YWwgfkhUTUxMaW5rRWxlbWVudCgpOwog
CiAgICAgVVJMIGhyZWYoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5j
cHAKaW5kZXggOTdjNWZlMi4uZjA5ZTE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxl
bWVudC5jcHAKQEAgLTQxLDEyICs0MSwxMiBAQCBIVE1MTWFwRWxlbWVudDo6SFRNTE1hcEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
IEFTU0VSVChoYXNUYWdOYW1lKG1hcFRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxNYXBFbGVt
ZW50PiBIVE1MTWFwRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxI
VE1MTWFwRWxlbWVudD4gSFRNTE1hcEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTWFwRWxlbWVudChtYXBUYWcsIGRvY3Vt
ZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTE1hcEVsZW1lbnQ+IEhUTUxNYXBFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQor
UmVmUHRyPEhUTUxNYXBFbGVtZW50PiBIVE1MTWFwRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEhUTUxNYXBFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CkBAIC0xMTAs
NyArMTEwLDcgQEAgdm9pZCBIVE1MTWFwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW4KICAgICBIVE1MRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiBIVE1MTWFwRWxlbWVudDo6YXJlYXMoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MTWFw
RWxlbWVudDo6YXJlYXMoKQogewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlv
bihNYXBBcmVhcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmgKaW5kZXggNjE3
YWExMy4uMmJhM2I5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuaApAQCAtMzIs
OCArMzIsOCBAQCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogICAgIAogY2xhc3MgSFRNTE1hcEVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxNYXBFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIVE1MTWFwRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTE1hcEVsZW1lbnQ+IGNyZWF0ZShEb2N1
bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTE1hcEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5IVE1MTWFwRWxlbWVudCgp
OwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBib29sIG1hcE1vdXNlRXZlbnQo
TGF5b3V0UG9pbnQgbG9jYXRpb24sIGNvbnN0IExheW91dFNpemUmLCBIaXRUZXN0UmVzdWx0Jik7
CiAgICAgCiAgICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50KCk7Ci0gICAgUGFzc1Jl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4gYXJlYXMoKTsKKyAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+
IGFyZWFzKCk7CiAKIHByaXZhdGU6CiAgICAgSFRNTE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
YXJxdWVlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVu
dC5jcHAKaW5kZXggNjAyYTZmYi4uMTFiODY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1hcnF1ZWVFbGVtZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgSFRNTE1hcnF1ZWVF
bGVtZW50OjpIVE1MTWFycXVlZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdQogICAgIEFTU0VSVChoYXNUYWdOYW1lKG1hcnF1ZWVUYWcpKTsKIH0KIAotUGFzc1JlZlB0
cjxIVE1MTWFycXVlZUVsZW1lbnQ+IEhUTUxNYXJxdWVlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MTWFy
cXVlZUVsZW1lbnQ+IEhUTUxNYXJxdWVlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBSZWZQdHI8SFRNTE1hcnF1
ZWVFbGVtZW50PiBtYXJxdWVlRWxlbWVudChhZG9wdFJlZihuZXcgSFRNTE1hcnF1ZWVFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSkpOwogICAgIG1hcnF1ZWVFbGVtZW50LT5zdXNwZW5kSWZOZWVk
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCmluZGV4IDQ3Zjgz
MWMuLjU1ODQ1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaApA
QCAtMzIsNyArMzIsNyBAQCBjbGFzcyBSZW5kZXJNYXJxdWVlOwogCiBjbGFzcyBIVE1MTWFycXVl
ZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHByaXZhdGUgQWN0aXZlRE9NT2Jq
ZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEhUTUxNYXJxdWVlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogCiAgICAgaW50IG1pbmltdW1EZWxheSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZW51RWxlbWVudC5jcHAKaW5kZXggNzRmMGJiNy4uM2JkZWMxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmNwcApAQCAtMzUsNyArMzUsNyBAQCBpbmxpbmUg
SFRNTE1lbnVFbGVtZW50OjpIVE1MTWVudUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobWVudVRhZykpOwogfQogCi1Q
YXNzUmVmUHRyPEhUTUxNZW51RWxlbWVudD4gSFRNTE1lbnVFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxN
ZW51RWxlbWVudD4gSFRNTE1lbnVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTE1lbnVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVudUVsZW1lbnQuaAppbmRleCAyYzdmMDhmZS4uM2M1YjVmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZW51RWxlbWVudC5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSFRNTE1lbnVFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTWVudUVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxN
ZW51RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAg
IAogcHJpdmF0ZToKICAgICBIVE1MTWVudUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKaW5kZXggYWIx
MDk2Ny4uYTQ1MGU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcApA
QCAtMzcsNyArMzcsNyBAQCBpbmxpbmUgSFRNTE1ldGFFbGVtZW50OjpIVE1MTWV0YUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmCiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUobWV0YVRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxNZXRhRWxlbWVudD4gSFRNTE1l
dGFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50KQorUmVmUHRyPEhUTUxNZXRhRWxlbWVudD4gSFRNTE1ldGFFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1ldGFFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaAppbmRleCA4YmU2ZGRhLi5j
OTEzOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKQEAgLTI5LDcgKzI5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MTWV0YUVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhU
TUxNZXRhRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8SFRNTE1ldGFFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNvbnRlbnQoKSBj
b25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGh0dHBFcXVpdigpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKaW5kZXggOTQ1MjEwZS4uMTRkYjhhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC01MCw3ICs1MCw3
IEBAIEhUTUxNZXRlckVsZW1lbnQ6On5IVE1MTWV0ZXJFbGVtZW50KCkKIHsKIH0KIAotUGFzc1Jl
ZlB0cjxIVE1MTWV0ZXJFbGVtZW50PiBIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxNZXRl
ckVsZW1lbnQ+IEhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgUmVmUHRyPEhUTUxNZXRlckVsZW1l
bnQ+IG1ldGVyID0gYWRvcHRSZWYobmV3IEhUTUxNZXRlckVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpKTsKICAgICBtZXRlci0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAppbmRleCBhOWJjOTQ2Li41MDZlMmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaApAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBS
ZW5kZXJNZXRlcjsKIAogY2xhc3MgSFRNTE1ldGVyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBMYWJl
bGFibGVFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTWV0ZXJF
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3Rh
dGljIFJlZlB0cjxIVE1MTWV0ZXJFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAKICAgICBlbnVtIEdhdWdlUmVnaW9uIHsKICAgICAgICAgR2F1Z2VSZWdp
b25PcHRpbXVtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmNwcAppbmRleCAyYTdl
NDcyLi4zODcwNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmNwcApAQCAt
MzQsNyArMzQsNyBAQCBpbmxpbmUgSFRNTE1vZEVsZW1lbnQ6OkhUTUxNb2RFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkbwogewogfQogCi1QYXNzUmVmUHRy
PEhUTUxNb2RFbGVtZW50PiBIVE1MTW9kRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MTW9kRWxlbWVudD4g
SFRNTE1vZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTW9kRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTW9kRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5o
CmluZGV4IDFmYjg2NWIuLmUzYzA5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1vZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50
LmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MTW9k
RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTE1vZEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxNb2RFbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTE1vZEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT0xpc3RFbGVtZW50LmNwcAppbmRleCA2ZjBjZTk4Li44ZTY1NGRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCBIVE1M
T0xpc3RFbGVtZW50OjpIVE1MT0xpc3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bQogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9sVGFnKSk7CiB9CiAK
LVBhc3NSZWZQdHI8SFRNTE9MaXN0RWxlbWVudD4gSFRNTE9MaXN0RWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MT0xpc3RFbGVtZW50PiBIVE1MT0xpc3RFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTE9MaXN0RWxlbWVudChvbFRhZywgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxI
VE1MT0xpc3RFbGVtZW50PiBIVE1MT0xpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxPTGlzdEVsZW1l
bnQ+IEhUTUxPTGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT0xp
c3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9M
aXN0RWxlbWVudC5oCmluZGV4IDFmMGFhZjEuLjUzYzVhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9MaXN0RWxlbWVudC5oCkBAIC0yOSw4ICsyOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSFRNTE9MaXN0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9MaXN0RWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9MaXN0RWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRN
TE9MaXN0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1M
T0xpc3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
ICAgICBpbnQgc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2hhc0V4cGxpY2l0U3RhcnQgPyBtX3N0
YXJ0IDogKG1faXNSZXZlcnNlZCA/IGl0ZW1Db3VudCgpIDogMSk7IH0KICAgICB2b2lkIHNldFN0
YXJ0KGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4
IDdkNTY1M2YuLjc4MTg3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCkBAIC03Niw3ICs3Niw3IEBAIGlubGluZSBIVE1MT2JqZWN0RWxlbWVudDo6fkhUTUxP
YmplY3RFbGVtZW50KCkKIHsKIH0KIAotUGFzc1JlZlB0cjxIVE1MT2JqZWN0RWxlbWVudD4gSFRN
TE9iamVjdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIpCitSZWZQdHI8SFRNTE9iamVjdEVsZW1lbnQ+IEhUTUxPYmplY3RFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9y
bUVsZW1lbnQqIGZvcm0sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTE9iamVjdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0
ZWRCeVBhcnNlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmlu
ZGV4IDAxN2U1ODAuLjc0MmIzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgSFRNTEZvcm1FbGVtZW50OwogCiBjbGFzcyBI
VE1MT2JqZWN0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LCBw
dWJsaWMgRm9ybUFzc29jaWF0ZWRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MT2JqZWN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYsIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEhUTUxPYmplY3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAg
IHZpcnR1YWwgfkhUTUxPYmplY3RFbGVtZW50KCk7CiAKICAgICBib29sIGlzRG9jTmFtZWRJdGVt
KCkgY29uc3QgeyByZXR1cm4gbV9kb2NOYW1lZEl0ZW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCmluZGV4IDFkN2NiOGYuLmFhNGRiM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcApAQCAtNDMsNyArNDMsNyBA
QCBpbmxpbmUgSFRNTE9wdEdyb3VwRWxlbWVudDo6SFRNTE9wdEdyb3VwRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEbwogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9wdGdyb3Vw
VGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTE9wdEdyb3VwRWxlbWVudD4gSFRNTE9wdEdyb3Vw
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKK1JlZlB0cjxIVE1MT3B0R3JvdXBFbGVtZW50PiBIVE1MT3B0R3JvdXBFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE9wdEdyb3VwRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
R3JvdXBFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQu
aAppbmRleCBjYjlkOWMwLi41ZTU1ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRHcm91cEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRH
cm91cEVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsK
IAogY2xhc3MgSFRNTE9wdEdyb3VwRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9wdEdyb3VwRWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8
SFRNTE9wdEdyb3VwRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogCiAgICAgdmlydHVhbCBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBvd25lclNlbGVjdEVsZW1lbnQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggZGVkMDEw
Mi4uY2M4MzA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAK
QEAgLTU3LDE3ICs1NywxNyBAQCBIVE1MT3B0aW9uRWxlbWVudDo6SFRNTE9wdGlvbkVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvYwogICAgIHNldEhhc0N1
c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxPcHRpb25F
bGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK1Jl
ZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVu
dChvcHRpb25UYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1l
bnQ+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0
aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxPcHRpb25FbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+
IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlLAorUmVmUHRyPEhU
TUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rv
cihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwKICAgICAgICAgYm9vbCBkZWZhdWx0U2VsZWN0ZWQsIGJvb2wgc2VsZWN0ZWQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gZWxlbWVudCA9
IGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudChvcHRpb25UYWcsIGRvY3VtZW50KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKaW5kZXggOWE2YzIwYi4uMGY4MDcy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApAQCAtMzQsOSArMzQs
OSBAQCBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKIAogY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQg
ZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxPcHRpb25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBjcmVh
dGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBT
dHJpbmcmIHZhbHVlLAorICAgIHN0YXRpYyBSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0
ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhU
TUxPcHRpb25FbGVtZW50PiBjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlLAogICAgICAgIGJvb2wgZGVmYXVsdFNl
bGVjdGVkLCBib29sIHNlbGVjdGVkLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgdGV4dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRF
bGVtZW50LmNwcAppbmRleCBjZTM4MWI2Li4wNzFlZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPdXRwdXRFbGVtZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBpbmxpbmUgSFRNTE91dHB1
dEVsZW1lbnQ6OkhUTUxPdXRwdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZQogewogfQogCi1QYXNzUmVmUHRyPEhUTUxPdXRwdXRFbGVtZW50PiBIVE1MT3V0cHV0
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQorUmVmUHRyPEhUTUxPdXRwdXRFbGVtZW50
PiBIVE1MT3V0cHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSFRNTE91dHB1dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0p
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaAppbmRleCA4M2E5YjY0
Li45MTZlZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTE91dHB1dEVsZW1l
bnQgZmluYWwgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTE91dHB1dEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEhUTUxPdXRwdXRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKICAgICBTdHJpbmcgdmFsdWUoKSBjb25zdDsKICAgICB2
b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
YXJhZ3JhcGhFbGVtZW50LmNwcAppbmRleCBhMzJhM2M4Li41ZDg1NjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcApAQCAtMzksMTIgKzM5LDEyIEBA
IGlubGluZSBIVE1MUGFyYWdyYXBoRWxlbWVudDo6SFRNTFBhcmFncmFwaEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwKICAgICBBU1NFUlQoaGFzVGFnTmFtZShwVGFnKSk7CiB9
CiAKLVBhc3NSZWZQdHI8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IEhUTUxQYXJhZ3JhcGhFbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50
PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxQYXJhZ3JhcGhFbGVtZW50KHBUYWcsIGRvY3VtZW50
KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IEhUTUxQYXJhZ3JhcGhF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQorUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxQYXJhZ3JhcGhFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
YXJhZ3JhcGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVt
ZW50LmgKaW5kZXggMTRkNzM4MS4uMTkwOTk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBhcmFncmFwaEVsZW1lbnQuaApAQCAtMjksOCArMjksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEhUTUxQYXJhZ3JhcGhFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFBhcmFncmFwaEVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTFBhcmFncmFwaEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGFyYW1FbGVtZW50LmNwcAppbmRleCBkMTBmNDYyLi4xNWMwOWQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgaW5saW5lIEhUTUxQ
YXJhbUVsZW1lbnQ6OkhUTUxQYXJhbUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQKICAgICBBU1NFUlQoaGFzVGFnTmFtZShwYXJhbVRhZykpOwogfQogCi1QYXNz
UmVmUHRyPEhUTUxQYXJhbUVsZW1lbnQ+IEhUTUxQYXJhbUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFBh
cmFtRWxlbWVudD4gSFRNTFBhcmFtRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEhUTUxQYXJhbUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGFyYW1FbGVtZW50LmgKaW5kZXggZWQ5YjRlYi4uYmU4NzkzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBIVE1MUGFyYW1FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVt
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MUGFyYW1FbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0
cjxIVE1MUGFyYW1FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcAppbmRleCBmOTk0YWUxLi4zNDI0
ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcApAQCAtMzgsNyArMzgs
NyBAQCBpbmxpbmUgSFRNTFByZUVsZW1lbnQ6OkhUTUxQcmVFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkbwogewogfQogCi1QYXNzUmVmUHRyPEhUTUxQcmVF
bGVtZW50PiBIVE1MUHJlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MUHJlRWxlbWVudD4gSFRNTFByZUVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MUHJlRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5oCmluZGV4IDY4
ODYwMWUuLmNhZDliZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmgKQEAgLTI5
LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MUHJlRWxlbWVudCBm
aW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SFRNTFByZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxQcmVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTFByZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRleCBlN2NhNjRmLi44Y2YyZDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAgLTUwLDExICs1MCwxMSBAQCBI
VE1MUHJvZ3Jlc3NFbGVtZW50Ojp+SFRNTFByb2dyZXNzRWxlbWVudCgpCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8SFRNTFByb2dyZXNzRWxlbWVudD4gSFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxI
VE1MUHJvZ3Jlc3NFbGVtZW50PiBIVE1MUHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIFJlZlB0cjxI
VE1MUHJvZ3Jlc3NFbGVtZW50PiBwcm9ncmVzcyA9IGFkb3B0UmVmKG5ldyBIVE1MUHJvZ3Jlc3NF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiAgICAgcHJvZ3Jlc3MtPmVuc3VyZVVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoKTsKLSAgICByZXR1cm4gcHJvZ3Jlc3MucmVsZWFzZSgpOworICAgIHJldHVy
biBwcm9ncmVzczsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQcm9ncmVzc0Vs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKaW5kZXggYzdmZDk1NS4u
MzYyZmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKQEAg
LTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgSW5kZXRlcm1p
bmF0ZVBvc2l0aW9uOwogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgSW52YWxpZFBvc2l0aW9uOwog
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFByb2dyZXNzRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFByb2dy
ZXNzRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAg
ICAgZG91YmxlIHZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1ZShkb3VibGUsIEV4Y2Vw
dGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5k
ZXggNTVmMWVmMy4uYTY3ZWIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxl
bWVudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5lIEhUTUxTY3JpcHRFbGVtZW50OjpIVE1M
U2NyaXB0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWUKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShzY3JpcHRUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MU2NyaXB0
RWxlbWVudD4gSFRNTFNjcmlwdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9v
bCBhbHJlYWR5U3RhcnRlZCkKK1JlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4gSFRNTFNjcmlwdEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQsIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxTY3JpcHRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBhbHJlYWR5U3RhcnRlZCkpOwogfQpAQCAtMTY4LDcg
KzE2OCw3IEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50KCkKICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFs
c2UsIGZhbHNlKSk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTFNjcmlwdEVsZW1lbnQ6
OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQorUmVmUHRyPEVsZW1l
bnQ+IEhUTUxTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENo
aWxkcmVuKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxTY3JpcHRFbGVtZW50KHRh
Z1FOYW1lKCksIGRvY3VtZW50KCksIGZhbHNlLCBhbHJlYWR5U3RhcnRlZCgpKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKaW5kZXggNjhkOTZhMy4uZTBlZTdiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaApAQCAtMzEsNyArMzEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxTY3JpcHRFbGVtZW50IGZpbmFsIDog
cHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgU2NyaXB0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTFNjcmlwdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wgYWxyZWFk
eVN0YXJ0ZWQgPSBmYWxzZSk7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgd2FzSW5zZXJ0ZWRC
eVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCA9IGZhbHNlKTsKIAogICAgIFN0cmluZyB0ZXh0
KCkgY29uc3QgeyByZXR1cm4gc2NyaXB0Q29udGVudCgpOyB9CiAgICAgdm9pZCBzZXRUZXh0KGNv
bnN0IFN0cmluZyYpOwpAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRB
dHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBvdmVycmlkZTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggY2IxNWI2ZC4uNzkx
YmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgSFRNTFNlbGVjdEVsZW1lbnQ6OkhUTUxTZWxlY3RFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2MKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShzZWxlY3RUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MU2VsZWN0RWxlbWVudD4gSFRNTFNl
bGVjdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKK1JlZlB0cjxIVE1MU2VsZWN0RWxl
bWVudD4gSFRNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsKICAgICBB
U1NFUlQodGFnTmFtZS5tYXRjaGVzKHNlbGVjdFRhZykpOwogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTFNlbGVjdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKQEAgLTM2OCwx
MiArMzY4LDEyIEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CiAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNz
YWdlU2hhZG93VHJlZUNvbnRhaW5zKGNoaWxkKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVj
dGlvbj4gSFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkT3B0aW9ucygpCitSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IEhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RlZE9wdGlvbnMoKQogewogICAgIHJl
dHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihTZWxlY3RlZE9wdGlvbnMpOwogfQogCi1Q
YXNzUmVmUHRyPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gSFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlv
bnMoKQorUmVmUHRyPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gSFRNTFNlbGVjdEVsZW1lbnQ6Om9w
dGlvbnMoKQogewogICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+KGVu
c3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFNlbGVjdE9wdGlvbnMpLmdldCgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAppbmRleCBkYzAwZGFhLi40YTNiYWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIEhUTUxPcHRpb25zQ29sbGVjdGlvbjsKIAogY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQg
OiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSwgcHVibGljIFR5cGVBaGVh
ZERhdGFTb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxTZWxlY3RF
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1F
bGVtZW50Kik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MU2VsZWN0RWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgaW50IHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKICAgICB2b2lkIHNldFNl
bGVjdGVkSW5kZXgoaW50KTsKQEAgLTY2LDggKzY2LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3Ry
aW5nJik7CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gb3B0aW9ucygp
OwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHNlbGVjdGVkT3B0aW9ucygpOworICAg
IFJlZlB0cjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IG9wdGlvbnMoKTsKKyAgICBSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IHNlbGVjdGVkT3B0aW9ucygpOwogCiAgICAgdm9pZCBvcHRpb25FbGVtZW50
Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNvdXJjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVu
dC5jcHAKaW5kZXggZjBiN2U0YS4uMzBmZGY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U291cmNlRWxlbWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgaW5saW5lIEhUTUxTb3VyY2VFbGVt
ZW50OjpIVE1MU291cmNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWUKICAgICBBU1NFUlQoaGFzVGFnTmFtZShzb3VyY2VUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxI
VE1MU291cmNlRWxlbWVudD4gSFRNTFNvdXJjZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFNvdXJjZUVs
ZW1lbnQ+IEhUTUxTb3VyY2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TFNvdXJjZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNvdXJjZUVsZW1lbnQuaAppbmRleCA0Y2E1MjhkLi5jZjFiNWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxTb3VyY2VFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJl
ZlB0cjxIVE1MU291cmNlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogCiAgICAgU3RyaW5nIG1lZGlhKCkgY29uc3Q7CiAgICAgU3RyaW5nIHR5cGUoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNwYW5FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNwYW5FbGVtZW50LmNwcAppbmRleCA5ZWNjMjMx
Li40NDZiMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTcGFuRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3BhbkVsZW1lbnQuY3BwCkBAIC0z
OCw3ICszOCw3IEBAIEhUTUxTcGFuRWxlbWVudDo6SFRNTFNwYW5FbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVuCiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoc3BhblRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxTcGFuRWxlbWVudD4gSFRNTFNwYW5F
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQorUmVmUHRyPEhUTUxTcGFuRWxlbWVudD4gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFNwYW5FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTcGFuRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3BhbkVsZW1lbnQuaAppbmRleCA1NzMzMjMzLi40OTdi
ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTcGFuRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNwYW5FbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MU3BhbkVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxT
cGFuRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAg
IHN0YXRpYyBSZWZQdHI8SFRNTFNwYW5FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTFNwYW5FbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxl
bWVudC5jcHAKaW5kZXggNjgwNjQ5NDkuLjhlNjkzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU3R5bGVFbGVtZW50LmNwcApAQCAtNjMsNyArNjMsNyBAQCBIVE1MU3R5bGVFbGVtZW50Ojp+
SFRNTFN0eWxlRWxlbWVudCgpCiAgICAgc3R5bGVMb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVu
dCgqdGhpcyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFN0eWxlRWxlbWVudD4gSFRNTFN0eWxlRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCitSZWZQdHI8SFRNTFN0eWxlRWxlbWVudD4gSFRN
TFN0eWxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MU3R5bGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJz
ZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgKaW5kZXggNGI1NTJl
MC4uZTkxZmJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgKQEAgLTM2
LDcgKzM2LDcgQEAgdHlwZWRlZiBFdmVudFNlbmRlcjxIVE1MU3R5bGVFbGVtZW50PiBTdHlsZUV2
ZW50U2VuZGVyOwogCiBjbGFzcyBIVE1MU3R5bGVFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxF
bGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MU3R5bGVFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQ
YXJzZXIpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFN0eWxlRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2
aXJ0dWFsIH5IVE1MU3R5bGVFbGVtZW50KCk7CiAKICAgICBDU1NTdHlsZVNoZWV0KiBzaGVldCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVTaGVldE93bmVyLnNoZWV0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAppbmRleCBmYjM5NzNhLi5iMDgxMWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCkBAIC0zOCw3ICsz
OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGNsYXNzIFN1bW1hcnlDb250ZW50
RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBJbnNlcnRpb25Qb2ludCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3VtbWFyeUNvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsK
KyAgICBzdGF0aWMgUmVmUHRyPFN1bW1hcnlDb250ZW50RWxlbWVudD4gY3JlYXRlKERvY3VtZW50
Jik7CiAKIHByaXZhdGU6CiAgICAgU3VtbWFyeUNvbnRlbnRFbGVtZW50KERvY3VtZW50JiBkb2N1
bWVudCkKQEAgLTQ3LDE2ICs0NywxNiBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKLVBhc3NSZWZQ
dHI8U3VtbWFyeUNvbnRlbnRFbGVtZW50PiBTdW1tYXJ5Q29udGVudEVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8U3VtbWFyeUNvbnRlbnRFbGVtZW50PiBTdW1tYXJ5
Q29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdW1tYXJ5Q29udGVudEVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotUGFz
c1JlZlB0cjxIVE1MU3VtbWFyeUVsZW1lbnQ+IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxI
VE1MU3VtbWFyeUVsZW1lbnQ+IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBSZWZQdHI8SFRN
TFN1bW1hcnlFbGVtZW50PiBzdW1tYXJ5ID0gYWRvcHRSZWYobmV3IEhUTUxTdW1tYXJ5RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogICAgIHN1bW1hcnktPmVuc3VyZVVzZXJBZ2VudFNoYWRv
d1Jvb3QoKTsKLSAgICByZXR1cm4gc3VtbWFyeS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN1bW1h
cnk7CiB9CiAKIEhUTUxTdW1tYXJ5RWxlbWVudDo6SFRNTFN1bW1hcnlFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCmluZGV4IDBkYjhhYmUuLjBkNTZlM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaApAQCAtMjksNyArMjksNyBAQCBjbGFz
cyBIVE1MRGV0YWlsc0VsZW1lbnQ7CiAKIGNsYXNzIEhUTUxTdW1tYXJ5RWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TFN1bW1hcnlFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CisgICAgc3RhdGljIFJlZlB0cjxIVE1MU3VtbWFyeUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICBib29sIGlzTWFpblN1bW1hcnkoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNw
cAppbmRleCAwZGRmNDE3Li5mMmU5ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcApAQCAtMzksNyArMzksNyBAQCBpbmxpbmUgSFRNTFRh
YmxlQ2FwdGlvbkVsZW1lbnQ6OkhUTUxUYWJsZUNhcHRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZwogICAgIEFTU0VSVChoYXNUYWdOYW1lKGNhcHRpb25UYWcpKTsKIH0KIAotUGFz
c1JlZlB0cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4gSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQp
CitSZWZQdHI8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+IEhUTUxUYWJsZUNhcHRpb25FbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2Fw
dGlvbkVsZW1lbnQuaAppbmRleCA5MDRjMzI3Li45ZGM1ZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxU
YWJsZUNhcHRpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIEhUTUxUYWJs
ZUNhcHRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAppbmRleCAwMGY0N2NkLi43
ZGE3ODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNw
cApAQCAtNDQsNyArNDQsNyBAQCBpbmxpbmUgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OkhUTUxUYWJs
ZUNlbGxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+IEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRy
PEhUTUxUYWJsZUNlbGxFbGVtZW50PiBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZUNlbGxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKaW5kZXggM2Nk
YjlhYi4uOTEyMDk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxU
YWJsZUNlbGxFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxUYWJsZVBhcnRFbGVtZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVGFibGVDZWxsRWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRN
TFRhYmxlQ2VsbEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKIAogICAgIGludCBjZWxsSW5kZXgoKSBjb25zdDsKICAgICBpbnQgY29sU3BhbigpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKaW5kZXggOWZh
YzdhOC4uNWE2ZWE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
b2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1l
bnQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBIVE1MVGFibGVDb2xFbGVtZW50OjpIVE1M
VGFibGVDb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvCiB7CiB9CiAK
LVBhc3NSZWZQdHI8SFRNTFRhYmxlQ29sRWxlbWVudD4gSFRNTFRhYmxlQ29sRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1Jl
ZlB0cjxIVE1MVGFibGVDb2xFbGVtZW50PiBIVE1MVGFibGVDb2xFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTFRhYmxlQ29sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuaAppbmRleCAyYzk2
MDg1Li4zMDNlZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNv
bEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQu
aApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxUYWJs
ZUNvbEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTFRhYmxlUGFydEVsZW1lbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxUYWJsZUNvbEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8
SFRNTFRhYmxlQ29sRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50Jik7CiAKICAgICBpbnQgc3BhbigpIGNvbnN0IHsgcmV0dXJuIG1fc3BhbjsgfQog
ICAgIHZvaWQgc2V0U3BhbihpbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKaW5kZXggYTA1NzcxMy4uNDAyMjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCkBAIC01NywxMiArNTcsMTIgQEAgSFRNTFRhYmxlRWxlbWVudDo6SFRN
TFRhYmxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW0KICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0YWJsZVRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhU
TUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCitSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZUVs
ZW1lbnQodGFibGVUYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFRhYmxlRWxl
bWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MVGFibGVFbGVtZW50PiBIVE1MVGFi
bGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRhYmxlRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkpOwogfQpAQCAtMTI0LDEzICsxMjQsMTMgQEAgdm9pZCBIVE1MVGFi
bGVFbGVtZW50OjpzZXRURm9vdChQYXNzUmVmUHRyPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiBu
ZXdGb290LCBFeGMKICAgICBpbnNlcnRCZWZvcmUobmV3Rm9vdCwgY2hpbGQsIGVjKTsKIH0KIAot
UGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlVEhlYWQoKQor
UmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVUSGVhZCgpCiB7CiAg
ICAgaWYgKEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiBleGlzdGluZ0hlYWQgPSB0SGVhZCgpKQog
ICAgICAgICByZXR1cm4gZXhpc3RpbmdIZWFkOwogICAgIFJlZlB0cjxIVE1MVGFibGVTZWN0aW9u
RWxlbWVudD4gaGVhZCA9IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpjcmVhdGUodGhlYWRUYWcs
IGRvY3VtZW50KCkpOwogICAgIHNldFRIZWFkKGhlYWQsIElHTk9SRV9FWENFUFRJT04pOwotICAg
IHJldHVybiBoZWFkLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaGVhZDsKIH0KIAogdm9pZCBIVE1M
VGFibGVFbGVtZW50OjpkZWxldGVUSGVhZCgpCkBAIC0xMzgsMTMgKzEzOCwxMyBAQCB2b2lkIEhU
TUxUYWJsZUVsZW1lbnQ6OmRlbGV0ZVRIZWFkKCkKICAgICByZW1vdmVDaGlsZCh0SGVhZCgpLCBJ
R05PUkVfRVhDRVBUSU9OKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxl
RWxlbWVudDo6Y3JlYXRlVEZvb3QoKQorUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVt
ZW50OjpjcmVhdGVURm9vdCgpCiB7CiAgICAgaWYgKEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiBl
eGlzdGluZ0Zvb3QgPSB0Rm9vdCgpKQogICAgICAgICByZXR1cm4gZXhpc3RpbmdGb290OwogICAg
IFJlZlB0cjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4gZm9vdCA9IEhUTUxUYWJsZVNlY3Rpb25F
bGVtZW50OjpjcmVhdGUodGZvb3RUYWcsIGRvY3VtZW50KCkpOwogICAgIHNldFRGb290KGZvb3Qs
IElHTk9SRV9FWENFUFRJT04pOwotICAgIHJldHVybiBmb290LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gZm9vdDsKIH0KIAogdm9pZCBIVE1MVGFibGVFbGVtZW50OjpkZWxldGVURm9vdCgpCkBAIC0x
NTIsMjEgKzE1MiwyMSBAQCB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmRlbGV0ZVRGb290KCkKICAg
ICByZW1vdmVDaGlsZCh0Rm9vdCgpLCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KIAotUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlVEJvZHkoKQorUmVmUHRyPEhU
TUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVUQm9keSgpCiB7CiAgICAgUmVmUHRy
PEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiBib2R5ID0gSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6
OmNyZWF0ZSh0Ym9keVRhZywgZG9jdW1lbnQoKSk7CiAgICAgTm9kZSogcmVmZXJlbmNlRWxlbWVu
dCA9IGxhc3RCb2R5KCkgPyBsYXN0Qm9keSgpLT5uZXh0U2libGluZygpIDogMDsKICAgICBpbnNl
cnRCZWZvcmUoYm9keSwgcmVmZXJlbmNlRWxlbWVudCwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0g
ICAgcmV0dXJuIGJvZHkucmVsZWFzZSgpOworICAgIHJldHVybiBib2R5OwogfQogCi1QYXNzUmVm
UHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVDYXB0aW9uKCkKK1JlZlB0
cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlQ2FwdGlvbigpCiB7CiAgICAg
aWYgKEhUTUxUYWJsZUNhcHRpb25FbGVtZW50KiBleGlzdGluZ0NhcHRpb24gPSBjYXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBleGlzdGluZ0NhcHRpb247CiAgICAgUmVmUHRyPEhUTUxUYWJsZUNh
cHRpb25FbGVtZW50PiBjYXB0aW9uID0gSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OmNyZWF0ZShj
YXB0aW9uVGFnLCBkb2N1bWVudCgpKTsKICAgICBzZXRDYXB0aW9uKGNhcHRpb24sIElHTk9SRV9F
WENFUFRJT04pOwotICAgIHJldHVybiBjYXB0aW9uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gY2Fw
dGlvbjsKIH0KIAogdm9pZCBIVE1MVGFibGVFbGVtZW50OjpkZWxldGVDYXB0aW9uKCkKQEAgLTE4
Myw3ICsxODMsNyBAQCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCogSFRNTFRhYmxlRWxlbWVudDo6
bGFzdEJvZHkoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEhU
TUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjppbnNlcnRSb3coaW50IGluZGV4LCBFeGNlcHRp
b25Db2RlJiBlYykKK1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6aW5zZXJ0
Um93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGluZGV4IDwgLTEp
IHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKQEAgLTIyMCwxMyArMjIwLDEzIEBAIFBh
c3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1lbnQ6Omluc2VydFJvdyhpbnQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgICAgICAgICBSZWZQdHI8SFRNTFRhYmxlUm93RWxl
bWVudD4gbmV3Um93ID0gSFRNTFRhYmxlUm93RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwog
ICAgICAgICAgICAgbmV3Qm9keS0+YXBwZW5kQ2hpbGQobmV3Um93LCBlYyk7CiAgICAgICAgICAg
ICBhcHBlbmRDaGlsZChuZXdCb2R5LnJlbGVhc2UoKSwgZWMpOwotICAgICAgICAgICAgcmV0dXJu
IG5ld1Jvdy5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbmV3Um93OwogICAgICAgICB9
CiAgICAgfQogCiAgICAgUmVmUHRyPEhUTUxUYWJsZVJvd0VsZW1lbnQ+IG5ld1JvdyA9IEhUTUxU
YWJsZVJvd0VsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICBwYXJlbnQtPmluc2VydEJl
Zm9yZShuZXdSb3csIHJvdy5nZXQoKSwgZWMpOwotICAgIHJldHVybiBuZXdSb3cucmVsZWFzZSgp
OworICAgIHJldHVybiBuZXdSb3c7CiB9CiAKIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6ZGVsZXRl
Um93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00NjgsNyArNDY4LDcgQEAgSFRN
TFRhYmxlRWxlbWVudDo6Q2VsbEJvcmRlcnMgSFRNTFRhYmxlRWxlbWVudDo6Y2VsbEJvcmRlcnMo
KSBjb25zdAogICAgIHJldHVybiBOb0JvcmRlcnM7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVQcm9w
ZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5bGUoKQorUmVmUHRy
PFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0eWxl
KCkKIHsKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gc3R5bGUgPSBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKIApAQCAtNTA1LDcgKzUwNSw3IEBAIFBhc3NSZWZQ
dHI8U3R5bGVQcm9wZXJ0aWVzPiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGVTaGFyZWRDZWxsU3R5
bGUoKQogICAgIGlmIChtX3BhZGRpbmcpCiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVBhZGRpbmcsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKG1fcGFkZGluZywgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwogCi0gICAgcmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gc3R5bGU7CiB9CiAKIGNvbnN0IFN0eWxlUHJvcGVydGllcyogSFRNTFRhYmxl
RWxlbWVudDo6YWRkaXRpb25hbENlbGxTdHlsZSgpCkBAIC01NTAsMTIgKzU1MCwxMiBAQCBib29s
IEhUTUxUYWJsZUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmli
dXRlKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGUubmFtZSgpID09IGJhY2tncm91bmRBdHRy
IHx8IEhUTUxFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCi1QYXNzUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50Ojpyb3dzKCkKK1JlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gSFRNTFRhYmxlRWxlbWVudDo6cm93cygpCiB7CiAgICAgcmV0dXJuIGVuc3Vy
ZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFRhYmxlUm93cyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IEhUTUxUYWJsZUVsZW1lbnQ6OnRCb2RpZXMoKQorUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiBIVE1MVGFibGVFbGVtZW50Ojp0Qm9kaWVzKCkKIHsKICAgICByZXR1cm4gZW5zdXJlQ2Fj
aGVkSFRNTENvbGxlY3Rpb24oVGFibGVUQm9kaWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVFbGVtZW50LmgKaW5kZXggODczZGYyNS4uYjdlMWE3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmgKQEAgLTM3LDggKzM3LDggQEAgY2xhc3MgSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQ7CiAKIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRN
TEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxUYWJsZUVsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxUYWJsZUVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRp
YyBSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOwogCiAgICAgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqIGNhcHRpb24oKSBjb25z
dDsKICAgICB2b2lkIHNldENhcHRpb24oUGFzc1JlZlB0cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVu
dD4sIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTQ5LDE5ICs0OSwxOSBAQCBwdWJsaWM6CiAgICAgSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQqIHRGb290KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRURm9vdChQ
YXNzUmVmUHRyPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiwgRXhjZXB0aW9uQ29kZSYpOwogCi0g
ICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlVEhlYWQoKTsKKyAgICBSZWZQdHI8SFRN
TEVsZW1lbnQ+IGNyZWF0ZVRIZWFkKCk7CiAgICAgdm9pZCBkZWxldGVUSGVhZCgpOwotICAgIFBh
c3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVRGb290KCk7CisgICAgUmVmUHRyPEhUTUxFbGVt
ZW50PiBjcmVhdGVURm9vdCgpOwogICAgIHZvaWQgZGVsZXRlVEZvb3QoKTsKLSAgICBQYXNzUmVm
UHRyPEhUTUxFbGVtZW50PiBjcmVhdGVUQm9keSgpOwotICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1l
bnQ+IGNyZWF0ZUNhcHRpb24oKTsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVRCb2R5
KCk7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVDYXB0aW9uKCk7CiAgICAgdm9pZCBk
ZWxldGVDYXB0aW9uKCk7Ci0gICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gaW5zZXJ0Um93KEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBpbnNlcnRSb3coLTEsIGVjKTsgfQotICAgIFBhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IGluc2VydFJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGluc2VydFJvdyhFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gaW5zZXJ0Um93KC0xLCBlYyk7IH0KKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGluc2Vy
dFJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZVJvdyhpbnQg
aW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+
IHJvd3MoKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB0Qm9kaWVzKCk7CisgICAg
UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiByb3dzKCk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiB0Qm9kaWVzKCk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJ1bGVzKCkgY29uc3Q7CiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdW1tYXJ5KCkgY29uc3Q7CkBAIC04Nyw3ICs4Nyw3IEBA
IHByaXZhdGU6CiAKICAgICBDZWxsQm9yZGVycyBjZWxsQm9yZGVycygpIGNvbnN0OwogCi0gICAg
UGFzc1JlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOworICAg
IFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVNoYXJlZENlbGxTdHlsZSgpOwogCiAgICAg
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIGxhc3RCb2R5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCmluZGV4IDk3YmFhMjAuLjk5MzY3NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcApAQCAtNDQs
MTIgKzQ0LDEyIEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQ6OkhUTUxUYWJsZVJvd0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmCiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUodHJUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBIVE1MVGFi
bGVSb3dFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxUYWJs
ZVJvd0VsZW1lbnQ+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFibGVSb3dFbGVtZW50KHRyVGFn
LCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxUYWJsZVJvd0VsZW1lbnQ+IEhUTUxU
YWJsZVJvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFRhYmxlUm93RWxlbWVudD4gSFRNTFRhYmxlUm93
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZVJvd0VsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KQEAgLTExOCw3ICsxMTgsNyBAQCBpbnQgSFRNTFRhYmxl
Um93RWxlbWVudDo6c2VjdGlvblJvd0luZGV4KCkgY29uc3QKICAgICByZXR1cm4gckluZGV4Owog
fQogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVSb3dFbGVtZW50OjppbnNlcnRD
ZWxsKGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8SFRNTEVsZW1lbnQ+IEhU
TUxUYWJsZVJvd0VsZW1lbnQ6Omluc2VydENlbGwoaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNoaWxkcmVuID0gY2VsbHMoKTsKICAg
ICBpbnQgbnVtQ2VsbHMgPSBjaGlsZHJlbiA/IGNoaWxkcmVuLT5sZW5ndGgoKSA6IDA7CkBAIC0x
MzgsNyArMTM4LDcgQEAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlUm93RWxlbWVu
dDo6aW5zZXJ0Q2VsbChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUKICAgICAgICAgICAgIG4gPSBj
aGlsZHJlbi0+aXRlbShpbmRleCk7CiAgICAgICAgIGluc2VydEJlZm9yZShjZWxsLCBuLCBlYyk7
CiAgICAgfQotICAgIHJldHVybiBjZWxsLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gY2VsbDsKIH0K
IAogdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50OjpkZWxldGVDZWxsKGludCBpbmRleCwgRXhjZXB0
aW9uQ29kZSYgZWMpCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50
OjpkZWxldGVDZWxsKGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0g
SU5ERVhfU0laRV9FUlI7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJs
ZVJvd0VsZW1lbnQ6OmNlbGxzKCkKK1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlUm93
RWxlbWVudDo6Y2VsbHMoKQogewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlv
bihUUkNlbGxzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Um93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmgK
aW5kZXggYzRiMGY3Ny4uZDFlMmM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVSb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVS
b3dFbGVtZW50LmgKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBIVE1MVGFibGVSb3dFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxUYWJsZVBhcnRFbGVtZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBj
cmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVGFibGVSb3dFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGlj
IFJlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEhUTUxUYWJsZVJvd0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIAogICAgIGludCByb3dJbmRleCgpIGNvbnN0OwogICAgIHZvaWQgc2V0
Um93SW5kZXgoaW50KTsKQEAgLTQxLDExICs0MSwxMSBAQCBwdWJsaWM6CiAgICAgaW50IHNlY3Rp
b25Sb3dJbmRleCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2VjdGlvblJvd0luZGV4KGludCk7CiAK
LSAgICBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBpbnNlcnRDZWxsKEV4Y2VwdGlvbkNvZGUmIGVj
KSB7IHJldHVybiBpbnNlcnRDZWxsKC0xLCBlYyk7IH0KLSAgICBQYXNzUmVmUHRyPEhUTUxFbGVt
ZW50PiBpbnNlcnRDZWxsKGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxI
VE1MRWxlbWVudD4gaW5zZXJ0Q2VsbChFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gaW5zZXJ0
Q2VsbCgtMSwgZWMpOyB9CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBpbnNlcnRDZWxsKGludCBp
bmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlQ2VsbChpbnQgaW5kZXgsIEV4
Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNlbGxzKCk7
CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBjZWxscygpOwogICAgIHZvaWQgc2V0Q2VsbHMo
SFRNTENvbGxlY3Rpb24gKiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAppbmRleCA0OTEzZjEy
Li45ODYwZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rp
b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25F
bGVtZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQ6OkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZwogewog
fQogCi1QYXNzUmVmUHRyPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiBIVE1MVGFibGVTZWN0aW9u
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKK1JlZlB0cjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4gSFRNTFRhYmxlU2VjdGlv
bkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFibGVTZWN0aW9uRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpAQCAtNTYsNyArNTYsNyBAQCBjb25zdCBTdHls
ZVByb3BlcnRpZXMqIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjphZGRpdGlvbmFsUHJlc2VudGF0
aW9uQXR0cmlidXRlUwogCiAvLyB0aGVzZSBmdW5jdGlvbnMgYXJlIHJhdGhlciBzbG93LCBzaW5j
ZSB3ZSBuZWVkIHRvIGdldCB0aGUgcm93IGF0CiAvLyB0aGUgaW5kZXguLi4gYnV0IHRoZXkgYXJl
bid0IHVzZWQgZHVyaW5nIHVzdWFsIEhUTUwgcGFyc2luZyBhbnl3YXkKLVBhc3NSZWZQdHI8SFRN
TEVsZW1lbnQ+IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjppbnNlcnRSb3coaW50IGluZGV4LCBF
eGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQ6Omluc2VydFJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJl
ZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiByb3c7CiAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiBjaGlsZHJlbiA9IHJvd3MoKTsKQEAgLTc2LDcgKzc2LDcgQEAgUGFzc1JlZlB0cjxIVE1MRWxl
bWVudD4gSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6Omluc2VydFJvdyhpbnQgaW5kZXgsIEV4Y2Vw
dGlvbkMKICAgICAgICAgICAgIGluc2VydEJlZm9yZShyb3csIG4sIGVjKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICByZXR1cm4gcm93LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcm93OwogfQogCiB2
b2lkIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpkZWxldGVSb3coaW50IGluZGV4LCBFeGNlcHRp
b25Db2RlJiBlYykKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIEhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50OjpzZXRWQWxpZ24oY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICBzZXRBdHRyaWJ1
dGUodmFsaWduQXR0ciwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBI
VE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cygpCitSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhU
TUxUYWJsZVNlY3Rpb25FbGVtZW50Ojpyb3dzKCkKIHsKICAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
SFRNTENvbGxlY3Rpb24oVFNlY3Rpb25Sb3dzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaAppbmRleCA1MDVjY2RlLi44ZTc0YzI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oCkBAIC0zMywxMCAr
MzMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MVGFibGVTZWN0aW9uRWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MVGFibGVQYXJ0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
LSAgICBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBpbnNlcnRSb3coRXhjZXB0aW9uQ29kZSYgZWMp
IHsgcmV0dXJuIGluc2VydFJvdygtMSwgZWMpOyB9Ci0gICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVu
dD4gaW5zZXJ0Um93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxIVE1M
RWxlbWVudD4gaW5zZXJ0Um93KEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBpbnNlcnRSb3co
LTEsIGVjKTsgfQorICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gaW5zZXJ0Um93KGludCBpbmRleCwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlUm93KGludCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgaW50IG51bVJvd3MoKSBjb25zdDsKQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdkFsaWduKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRWQWxpZ24oY29uc3QgQXRvbWljU3RyaW5nJik7CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xs
ZWN0aW9uPiByb3dzKCk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiByb3dzKCk7CiAKIHBy
aXZhdGU6CiAgICAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRlbXBsYXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVs
ZW1lbnQuY3BwCmluZGV4IGYxMDg4NDkuLjMyMGRlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQCBIVE1MVGVtcGxhdGVF
bGVtZW50Ojp+SFRNTFRlbXBsYXRlRWxlbWVudCgpCiAgICAgICAgIG1fY29udGVudC0+Y2xlYXJI
b3N0KCk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFRlbXBsYXRlRWxlbWVudD4gSFRNTFRlbXBsYXRl
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKK1JlZlB0cjxIVE1MVGVtcGxhdGVFbGVtZW50PiBIVE1MVGVtcGxhdGVFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRlbXBsYXRlRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQpAQCAtNjgsNyArNjgsNyBAQCBEb2N1bWVudEZyYWdtZW50KiBIVE1M
VGVtcGxhdGVFbGVtZW50Ojpjb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZW50Lmdl
dCgpOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+IEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNsb25lTm9k
ZShib29sIGRlZXApCitSZWZQdHI8Tm9kZT4gSFRNTFRlbXBsYXRlRWxlbWVudDo6Y2xvbmVOb2Rl
KGJvb2wgZGVlcCkKIHsKICAgICBpZiAoIWRlZXApCiAgICAgICAgIHJldHVybiBjbG9uZUVsZW1l
bnRXaXRob3V0Q2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRlbXBsYXRlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVt
ZW50LmgKaW5kZXggYzgxZjdhNi4uYWExZTIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGVtcGxhdGVFbGVtZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgVGVtcGxhdGVDb250ZW50
RG9jdW1lbnRGcmFnbWVudDsKIAogY2xhc3MgSFRNTFRlbXBsYXRlRWxlbWVudCBmaW5hbCA6IHB1
YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFRl
bXBsYXRlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8SFRNTFRlbXBsYXRlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgfkhUTUxUZW1wbGF0ZUVsZW1lbnQo
KTsKIAogICAgIERvY3VtZW50RnJhZ21lbnQqIGNvbnRlbnQoKSBjb25zdDsKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MVGVtcGxhdGVFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+
IGNsb25lTm9kZShib29sIGRlZXApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+
IGNsb25lTm9kZShib29sIGRlZXApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3Zl
VG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIG92ZXJyaWRlOwogCiAgICAgbXV0
YWJsZSBSZWZQdHI8VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudD4gbV9jb250ZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggM2U3OTdi
Ni4uOTFkNzFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwCkBAIC0xMDEsMTEgKzEwMSwxMSBAQCBIVE1MVGV4dEFyZWFFbGVtZW50OjpIVE1MVGV4dEFy
ZWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JgogICAgIHNl
dEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIodHJ1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8
SFRNTFRleHRBcmVhRWxlbWVudD4gSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50
KiBmb3JtKQorUmVmUHRyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQs
IEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsKICAgICBSZWZQdHI8SFRNTFRleHRBcmVhRWxlbWVu
dD4gdGV4dEFyZWEgPSBhZG9wdFJlZihuZXcgSFRNTFRleHRBcmVhRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCwgZm9ybSkpOwogICAgIHRleHRBcmVhLT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290
KCk7Ci0gICAgcmV0dXJuIHRleHRBcmVhLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdGV4dEFyZWE7
CiB9CiAKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9v
dChTaGFkb3dSb290KiByb290KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaAppbmRleCBiZWRkMGExLi5mYzQxNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBWaXNpYmxlU2VsZWN0aW9u
OwogCiBjbGFzcyBIVE1MVGV4dEFyZWFFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVGV4
dEFyZWFFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRN
TEZvcm1FbGVtZW50Kik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MVGV4dEFyZWFFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7
CiAKICAgICBpbnQgY29scygpIGNvbnN0IHsgcmV0dXJuIG1fY29sczsgfQogICAgIGludCByb3dz
KCkgY29uc3QgeyByZXR1cm4gbV9yb3dzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVF
bGVtZW50LmNwcAppbmRleCA5NDg2OGRkLi5jZmM2ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRpdGxlRWxlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgaW5saW5lIEhUTUxUaXRsZUVs
ZW1lbnQ6OkhUTUxUaXRsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0aXRsZVRhZykpOwogfQogCi1QYXNzUmVmUHRy
PEhUTUxUaXRsZUVsZW1lbnQ+IEhUTUxUaXRsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFRpdGxlRWxl
bWVudD4gSFRNTFRpdGxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxU
aXRsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGl0bGVFbGVtZW50LmgKaW5kZXggNWRlMWViNS4uNGFkMTE0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGl0bGVFbGVtZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBIVE1MVGl0bGVFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVGl0bGVFbGVtZW50PiBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1M
VGl0bGVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
ICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmluZGV4IDA3YzJjYzgu
LmE4NGUzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAt
NjQsNyArNjQsNyBAQCBIVE1MVHJhY2tFbGVtZW50Ojp+SFRNTFRyYWNrRWxlbWVudCgpCiAgICAg
ICAgIG1fdHJhY2stPmNsZWFyQ2xpZW50KCk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFRyYWNrRWxl
bWVudD4gSFRNTFRyYWNrRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBIVE1MVHJh
Y2tFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRyYWNrRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVHJhY2tFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQu
aAppbmRleCA0NDg4OWE1Li45MTc3YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUcmFja0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0Vs
ZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogCiBjbGFz
cyBIVE1MVHJhY2tFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgVGV4
dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVHJhY2tF
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3Rh
dGljIFJlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAKICAgICBTdHJpbmcga2luZCgpOwogICAgIHZvaWQgc2V0S2luZChjb25z
dCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwCmluZGV4
IGJjOWU0MGYuLmQzYTY2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVM
aXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50
LmNwcApAQCAtMzcsMTIgKzM3LDEyIEBAIEhUTUxVTGlzdEVsZW1lbnQ6OkhUTUxVTGlzdEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUodWxUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MVUxpc3RFbGVtZW50
PiBIVE1MVUxpc3RFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhU
TUxVTGlzdEVsZW1lbnQ+IEhUTUxVTGlzdEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVUxpc3RFbGVtZW50KHVsVGFnLCBk
b2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxVTGlzdEVsZW1lbnQ+IEhUTUxVTGlzdEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCitSZWZQdHI8SFRNTFVMaXN0RWxlbWVudD4gSFRNTFVMaXN0RWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxVTGlzdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmgKaW5kZXggYjI1ZjA3MS4u
ZWY3ODljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmgKQEAgLTI5LDgg
KzI5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MVUxpc3RFbGVtZW50IGZp
bmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxIVE1MVUxpc3RFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MVUxpc3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MVUxpc3RFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxVTGlzdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBIVE1MVUxpc3RFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFVua25vd25FbGVtZW50LmgKaW5kZXggYjRjNTkyNS4uM2UzZjMxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxVbmtub3duRWxlbWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFVua25vd25FbGVtZW50IGZpbmFsIDogcHVibGljIEhU
TUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVW5rbm93bkVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCisgICAgc3RhdGljIFJlZlB0cjxIVE1MVW5rbm93bkVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxVbmtub3duRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmlu
ZGV4IDcxYjAwNTEuLjg2ZDc3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcApAQCAtNTUsMTEgKzU1LDExIEBAIGlubGluZSBIVE1MVmlkZW9FbGVtZW50OjpIVE1M
VmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAgICAg
ICAgIG1fZGVmYXVsdFBvc3RlclVSTCA9IGRvY3VtZW50LnNldHRpbmdzKCktPmRlZmF1bHRWaWRl
b1Bvc3RlclVSTCgpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IEhUTUxWaWRl
b0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQorUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+
IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIFJlZlB0cjxI
VE1MVmlkZW9FbGVtZW50PiB2aWRlb0VsZW1lbnQoYWRvcHRSZWYobmV3IEhUTUxWaWRlb0VsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpKTsKICAgICB2aWRlb0VsZW1l
bnQtPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiB2aWRlb0VsZW1lbnQucmVsZWFzZSgp
OworICAgIHJldHVybiB2aWRlb0VsZW1lbnQ7CiB9CiAKIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBjMWI3ZmY1Li5lNWY2MDQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBIVE1M
SW1hZ2VMb2FkZXI7CiAKIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRN
TE1lZGlhRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFZpZGVv
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wpOwor
ICAgIHN0YXRpYyBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQg
dmlkZW9XaWR0aCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIHZpZGVvSGVp
Z2h0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQuY3BwCmluZGV4IDcz
OWE2NjIuLmU5NGNiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQuY3BwCkBA
IC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAotUGFzc1JlZlB0cjxIVE1MV0JSRWxlbWVudD4gSFRNTFdCUkVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitS
ZWZQdHI8SFRNTFdCUkVsZW1lbnQ+IEhUTUxXQlJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTFdCUkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFdCUkVsZW1lbnQuaAppbmRleCA3NmZmZGE4Li4yMTc3Yjk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSFRNTFdCUkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxXQlJFbGVtZW50PiBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1M
V0JSRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiBw
cml2YXRlOgogICAgIEhUTUxXQlJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggNDBhN2I1Ny4uYTNi
YzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAjaWYgIVBMQVRGT1JNKElPUykKIGNsYXNz
IEltYWdlRXZlbnRMaXN0ZW5lciBmaW5hbCA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUV2ZW50TGlzdGVuZXI+IGNyZWF0ZShJbWFn
ZURvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRXZlbnRMaXN0
ZW5lcihkb2N1bWVudCkpOyB9CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUV2ZW50TGlzdGVuZXI+
IGNyZWF0ZShJbWFnZURvY3VtZW50JiBkb2N1bWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IElt
YWdlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCkpOyB9CiAKIHByaXZhdGU6CiAgICAgSW1hZ2VFdmVu
dExpc3RlbmVyKEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNzIsNyArNzIsNyBAQCBwcml2
YXRlOgogCiBjbGFzcyBJbWFnZURvY3VtZW50UGFyc2VyIGZpbmFsIDogcHVibGljIFJhd0RhdGFE
b2N1bWVudFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEb2N1
bWVudFBhcnNlcj4gY3JlYXRlKEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VEb2N1bWVudFBhcnNlcj4gY3JlYXRlKEltYWdlRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZURvY3VtZW50UGFyc2Vy
KGRvY3VtZW50KSk7CiAgICAgfQpAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBJ
bWFnZURvY3VtZW50RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MSW1hZ2VFbGVtZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZURvY3VtZW50RWxlbWVudD4gY3JlYXRl
KEltYWdlRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRG9jdW1lbnRFbGVtZW50
PiBjcmVhdGUoSW1hZ2VEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIEltYWdlRG9jdW1lbnRF
bGVtZW50KEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZh
dGU6CiAgICAgSW1hZ2VEb2N1bWVudCogbV9pbWFnZURvY3VtZW50OwogfTsKIAotaW5saW5lIFBh
c3NSZWZQdHI8SW1hZ2VEb2N1bWVudEVsZW1lbnQ+IEltYWdlRG9jdW1lbnRFbGVtZW50OjpjcmVh
dGUoSW1hZ2VEb2N1bWVudCYgZG9jdW1lbnQpCitpbmxpbmUgUmVmUHRyPEltYWdlRG9jdW1lbnRF
bGVtZW50PiBJbWFnZURvY3VtZW50RWxlbWVudDo6Y3JlYXRlKEltYWdlRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEb2N1bWVudEVsZW1lbnQoZG9j
dW1lbnQpKTsKIH0KQEAgLTIwMiw3ICsyMDIsNyBAQCBJbWFnZURvY3VtZW50OjpJbWFnZURvY3Vt
ZW50KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgbG9ja0NvbXBhdGliaWxpdHlN
b2RlKCk7CiB9CiAgICAgCi1QYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBJbWFnZURvY3VtZW50
OjpjcmVhdGVQYXJzZXIoKQorUmVmUHRyPERvY3VtZW50UGFyc2VyPiBJbWFnZURvY3VtZW50Ojpj
cmVhdGVQYXJzZXIoKQogewogICAgIHJldHVybiBJbWFnZURvY3VtZW50UGFyc2VyOjpjcmVhdGUo
KnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAppbmRleCBlMWU5ZGUyLi43
MWQ1YmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaApAQCAtMzQsNyArMzQsNyBA
QCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogCiBjbGFzcyBJbWFnZURvY3VtZW50IGZpbmFsIDog
cHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1h
Z2VEb2N1bWVudD4gY3JlYXRlKEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3Rh
dGljIFJlZlB0cjxJbWFnZURvY3VtZW50PiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwm
IHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEb2N1bWVudChm
cmFtZSwgdXJsKSk7CiAgICAgfQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEltYWdlRG9jdW1lbnQoRnJhbWUmLCBjb25zdCBVUkwmKTsKIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpIG92ZXJyaWRlOwogCiAg
ICAgTGF5b3V0U2l6ZSBpbWFnZVNpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVu
dC5jcHAKaW5kZXggZDJjN2E1Zi4uNDFhMzcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9j
dW1lbnQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAv
LyBGSVhNRTogU2hhcmUgbW9yZSBjb2RlIHdpdGggUGx1Z2luRG9jdW1lbnRQYXJzZXIuCiBjbGFz
cyBNZWRpYURvY3VtZW50UGFyc2VyIGZpbmFsIDogcHVibGljIFJhd0RhdGFEb2N1bWVudFBhcnNl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFEb2N1bWVudFBhcnNlcj4g
Y3JlYXRlKE1lZGlhRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFE
b2N1bWVudFBhcnNlcj4gY3JlYXRlKE1lZGlhRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYURvY3VtZW50UGFyc2VyKGRvY3VtZW50KSk7
CiAgICAgfQpAQCAtMTUzLDcgKzE1Myw3IEBAIE1lZGlhRG9jdW1lbnQ6On5NZWRpYURvY3VtZW50
KCkKICAgICBBU1NFUlQoIW1fcmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyLmlzQWN0aXZlKCkpOwog
fQogCi1QYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBNZWRpYURvY3VtZW50OjpjcmVhdGVQYXJz
ZXIoKQorUmVmUHRyPERvY3VtZW50UGFyc2VyPiBNZWRpYURvY3VtZW50OjpjcmVhdGVQYXJzZXIo
KQogewogICAgIHJldHVybiBNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGUoKnRoaXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaAppbmRleCA5ZDcxY2UyLi45MTc5ODhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhRG9jdW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERvY3Vt
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYURvY3VtZW50PiBjcmVh
dGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlh
RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYURvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAg
ICB9CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWVkaWFEb2N1bWVu
dChGcmFtZSosIGNvbnN0IFVSTCYpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50
UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxEb2N1
bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IGVkMGY2MjIuLjc3ZTE0Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAvLyBGSVhNRTogU2hhcmUgbW9yZSBjb2RlIHdpdGggTWVkaWFEb2N1bWVu
dFBhcnNlci4KIGNsYXNzIFBsdWdpbkRvY3VtZW50UGFyc2VyIGZpbmFsIDogcHVibGljIFJhd0Rh
dGFEb2N1bWVudFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2lu
RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShQbHVnaW5Eb2N1bWVudCYgZG9jdW1lbnQpCisgICAgc3Rh
dGljIFJlZlB0cjxQbHVnaW5Eb2N1bWVudFBhcnNlcj4gY3JlYXRlKFBsdWdpbkRvY3VtZW50JiBk
b2N1bWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luRG9jdW1l
bnRQYXJzZXIoZG9jdW1lbnQpKTsKICAgICB9CkBAIC0xNDgsNyArMTQ4LDcgQEAgUGx1Z2luRG9j
dW1lbnQ6OlBsdWdpbkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAg
bG9ja0NvbXBhdGliaWxpdHlNb2RlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+
IFBsdWdpbkRvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQorUmVmUHRyPERvY3VtZW50UGFyc2VyPiBQ
bHVnaW5Eb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKIHsKICAgICByZXR1cm4gUGx1Z2luRG9jdW1l
bnRQYXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1BsdWdpbkRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50
LmgKaW5kZXggNmZjNmViYy4uYTI4MWRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9QbHVnaW5Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1l
bnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBXaWRnZXQ7CiAKIGNsYXNzIFBsdWdpbkRvY3Vt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8UGx1Z2luRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
dXJsKQorICAgIHN0YXRpYyBSZWZQdHI8UGx1Z2luRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
bHVnaW5Eb2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQpAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFBsdWdpbkRvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIo
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0U2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5KGJvb2wg
bG9hZE1hbnVhbGx5KSB7IG1fc2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5ID0gbG9hZE1hbnVhbGx5
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmNwcAppbmRleCA0N2I2OWM3Li42NmIw
ZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuY3BwCkBAIC0zNiw3ICszNiw3IEBA
IFRleHREb2N1bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwp
CiAgICAgbG9ja0NvbXBhdGliaWxpdHlNb2RlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRQ
YXJzZXI+IFRleHREb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKK1JlZlB0cjxEb2N1bWVudFBhcnNl
cj4gVGV4dERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogewogICAgIHJldHVybiBUZXh0RG9jdW1l
bnRQYXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHREb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuaApp
bmRleCA1OGUwNTU3Li5hNWQyN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHREb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0RG9jdW1lbnQg
ZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxUZXh0RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQor
ICAgIHN0YXRpYyBSZWZQdHI8VGV4dERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25z
dCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dERvY3Vt
ZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgVGV4dERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CiAgICAgCi0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJp
ZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5oCmluZGV4IDg5ZDQ0OTYuLjkxYWRjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNz
IFB1bXBTZXNzaW9uOwogY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyIDogIHB1YmxpYyBTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIsIEhUTUxTY3JpcHRSdW5uZXJIb3N0LCBDYWNoZWRSZXNvdXJjZUNs
aWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTERvY3VtZW50UGFyc2VyPiBjcmVhdGUoSFRNTERvY3VtZW50JiBkb2N1
bWVudCkKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gY3JlYXRlKEhUTUxE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxEb2N1bWVudFBhcnNlcihkb2N1bWVudCkpOwogICAgIH0KQEAgLTkzLDcgKzkzLDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgZm9yY2VQbGFpbnRleHRGb3JUZXh0RG9jdW1lbnQoKTsKIAogcHJp
dmF0ZToKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShE
b2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFBhcnNl
ckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKKyAgICBzdGF0aWMgUmVmUHRyPEhU
TUxEb2N1bWVudFBhcnNlcj4gY3JlYXRlKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9s
aWN5KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRG9jdW1lbnRQYXJz
ZXIoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCmluZGV4IDM3MDEz
NTQuLjNkOTU1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxT
dGFja0l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVt
LmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIC8vIFVzZWQgYnkg
ZG9jdW1lbnQgZnJhZ21lbnQgbm9kZSBhbmQgY29udGV4dCBlbGVtZW50LgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxTdGFja0l0ZW0+IGNyZWF0ZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+
IG5vZGUsIEl0ZW1UeXBlIHR5cGUpCisgICAgc3RhdGljIFJlZlB0cjxIVE1MU3RhY2tJdGVtPiBj
cmVhdGUoUGFzc1JlZlB0cjxDb250YWluZXJOb2RlPiBub2RlLCBJdGVtVHlwZSB0eXBlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU3RhY2tJdGVtKG5vZGUsIHR5cGUp
KTsKICAgICB9CiAKICAgICAvLyBVc2VkIGJ5IEhUTUxFbGVtZW50U3RhY2sgYW5kIEhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFN0YWNrSXRlbT4g
Y3JlYXRlKFBhc3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gbm9kZSwgQXRvbWljSFRNTFRva2VuKiB0
b2tlbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSBIVE1MTmFtZXM6OnhodG1s
TmFtZXNwYWNlVVJJKQorICAgIHN0YXRpYyBSZWZQdHI8SFRNTFN0YWNrSXRlbT4gY3JlYXRlKFBh
c3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gbm9kZSwgQXRvbWljSFRNTFRva2VuKiB0b2tlbiwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNl
VVJJKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU3RhY2tJdGVtKG5v
ZGUsIHRva2VuLCBuYW1lc3BhY2VVUkkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCBmOWNlZDZkLi40ODNmYWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVu
dC5jcHAKQEAgLTU5OCw3ICs1OTgsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFNsaWRlclRodW1i
RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxF
bGVtZW50PiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVz
QW5kQ2hpbGRyZW4oKQorUmVmUHRyPEVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6Y2xvbmVF
bGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZShkb2N1bWVudCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmgKaW5kZXggYTA0YTA1Ny4uZjNlZWQzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKQEAgLTYyLDcgKzYyLDcgQEAg
cHJpdmF0ZToKICAgICBTbGlkZXJUaHVtYkVsZW1lbnQoRG9jdW1lbnQmKTsKIAogICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVm
PFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+
IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzUmVhZFdyaXRl
UHNldWRvQ2xhc3MoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGZvY3Vz
RGVsZWdhdGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDMyMmFiZWIuLmM3MjdkN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcApAQCAtNzIsNyArNzIsNyBAQCBQYXNzUmVmUHRyPFRleHRDb250cm9s
SW5uZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBk
bwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQoZG9jdW1l
bnQpKTsKIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1l
bnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmKQorUmVmUHRyPFJlbmRlclN0
eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5k
ZXJTdHlsZSYpCiB7CiAgICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lJiBwYXJlbnRSZW5k
ZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZT4oKnNoYWRvd0hvc3Qo
KS0+cmVuZGVyZXIoKSk7CiAgICAgcmV0dXJuIHBhcmVudFJlbmRlcmVyLmNyZWF0ZUlubmVyQmxv
Y2tTdHlsZSgmcGFyZW50UmVuZGVyZXIuc3R5bGUoKSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgUmVu
ZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJl
bmRlcmVyKCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4dENvbnRyb2xJbm5l
ckJsb2NrPihIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXIoKSk7CiB9CiAKLVBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5k
ZXJlcihSZW5kZXJTdHlsZSYpCitSZWZQdHI8UmVuZGVyU3R5bGU+IFRleHRDb250cm9sSW5uZXJU
ZXh0RWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYpCiB7CiAgICAg
UmVuZGVyVGV4dENvbnRyb2wmIHBhcmVudFJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dENv
bnRyb2w+KCpzaGFkb3dIb3N0KCktPnJlbmRlcmVyKCkpOwogICAgIHJldHVybiBwYXJlbnRSZW5k
ZXJlci5jcmVhdGVJbm5lclRleHRTdHlsZSgmcGFyZW50UmVuZGVyZXIuc3R5bGUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oCmluZGV4IGMzMTI4YjguLmQzOWNkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC00OCw3ICs0OCw3IEBA
IHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFRleHRDb250cm9sSW5uZXJFbGVtZW50KERvY3Vt
ZW50Jik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZv
clJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUm
IHBhcmVudFN0eWxlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNN
b3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVGV4dENvbnRyb2xJbm5lclRleHRFbGVt
ZW50KERvY3VtZW50Jik7CiAgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVu
ZGVyU3R5bGUmIHBhcmVudFN0eWxlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKaW5kZXggZDc0YjgzOC4u
YTk0Nzk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3Bw
CkBAIC04MCw3ICs4MCw3IEBAIFBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gV2ViVlRURWxlbWVu
dDo6Y3JlYXRlKFdlYlZUVE5vZGVUeXBlIG5vZGVUeXBlLCBEb2N1bWVuCiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJWVFRFbGVtZW50KG5vZGVUeXBlLCBkb2N1bWVudCkpOwogfQogCi1QYXNz
UmVmUHRyPEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1
dGVzQW5kQ2hpbGRyZW4oKQorUmVmUHRyPEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNsb25lRWxl
bWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQogewogICAgIFJlZlB0cjxXZWJWVFRF
bGVtZW50PiBjbG9uZSA9IGNyZWF0ZShzdGF0aWNfY2FzdDxXZWJWVFROb2RlVHlwZT4obV93ZWJW
VFROb2RlVHlwZSksIGRvY3VtZW50KCkpOwogICAgIGNsb25lLT5zZXRMYW5ndWFnZShtX2xhbmd1
YWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKaW5kZXggNTJh
ZTQ4Ny4uNDJhNzVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZU
VEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBXZWJWVFROb2RlVHlwZSwgRG9jdW1lbnQmKTsKICAgICBQ
YXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQoRG9jdW1l
bnQmKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRo
b3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8
RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBzZXRXZWJWVFROb2RlVHlwZShXZWJWVFROb2RlVHlwZSB0eXBlKSB7
IG1fd2ViVlRUTm9kZVR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSk7IH0KICAgICBX
ZWJWVFROb2RlVHlwZSB3ZWJWVFROb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYlZUVE5vZGVUeXBlPihtX3dlYlZUVE5vZGVUeXBlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U2lua0RvY3VtZW50LmNwcAppbmRleCA2YzU1MDMyLi5mYzRiYjNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU2lua0RvY3VtZW50LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFNpbmtEb2N1bWVudFBhcnNlciBmaW5hbCA6IHB1YmxpYyBSYXdEYXRhRG9j
dW1lbnRQYXJzZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNpbmtEb2N1bWVu
dFBhcnNlcj4gY3JlYXRlKFNpbmtEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgc3RhdGljIFJlZlB0
cjxTaW5rRG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShTaW5rRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaW5rRG9jdW1lbnRQYXJzZXIoZG9jdW1l
bnQpKTsKICAgICB9CkBAIC01Niw3ICs1Niw3IEBAIFNpbmtEb2N1bWVudDo6U2lua0RvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgbG9ja0NvbXBhdGliaWxpdHlNb2Rl
KCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IFNpbmtEb2N1bWVudDo6Y3JlYXRl
UGFyc2VyKCkKK1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gU2lua0RvY3VtZW50OjpjcmVhdGVQYXJz
ZXIoKQogewogICAgIHJldHVybiBTaW5rRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmgKaW5kZXggY2ExZTc5MC4uYzc4MWY2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNpbmtEb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1M
RG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNpbmtEb2N1bWVudD4g
Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZlB0cjxT
aW5rRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaW5rRG9jdW1lbnQoZnJhbWUsIHVybCkpOwog
ICAgIH0KQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTaW5rRG9jdW1l
bnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9j
dW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpOworICAgIHZpcnR1YWwgUmVmUHRyPERvY3VtZW50
UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TEVsZW1lbnQuY3BwCmluZGV4IDIyOWUwZWEuLjViYmI5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRWxlbWVudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgTWF0aE1MRWxlbWVudDo6TWF0
aE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQpCiB7CiB9CiAgICAgCi1QYXNzUmVmUHRyPE1hdGhNTEVsZW1lbnQ+IE1hdGhNTEVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQp
CitSZWZQdHI8TWF0aE1MRWxlbWVudD4gTWF0aE1MRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1hdGhNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCmluZGV4IGI5OGZiZWIuLjE5YmQ1NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIE1hdGhNTEVsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWF0aE1MRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0
cjxNYXRoTUxFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmKTsKIAogICAgIGludCBjb2xTcGFuKCkgY29uc3Q7CiAgICAgaW50IHJvd1NwYW4oKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDNiOTBkM2MuLjBkZWEwOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNW
R0RvY3VtZW50Ojp1cGRhdGVQYW4oY29uc3QgRmxvYXRQb2ludCYgcG9zKSBjb25zdAogICAgIH0K
IH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudD4gU1ZHRG9jdW1lbnQ6OmNsb25lRG9jdW1lbnRXaXRo
b3V0Q2hpbGRyZW4oKSBjb25zdAorUmVmUHRyPERvY3VtZW50PiBTVkdEb2N1bWVudDo6Y2xvbmVE
b2N1bWVudFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNyZWF0ZShudWxs
cHRyLCB1cmwoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCmluZGV4IGVmNWJlMmUuLmZm
NTFkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNz
IFNWR1NWR0VsZW1lbnQ7CiAKIGNsYXNzIFNWR0RvY3VtZW50IGZpbmFsIDogcHVibGljIERvY3Vt
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdEb2N1bWVudD4gY3JlYXRl
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGljIFJlZlB0cjxTVkdEb2N1
bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0RvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRG9jdW1lbnQoRnJhbWUq
LCBjb25zdCBVUkwmKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudD4gY2xvbmVE
b2N1bWVudFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVm
UHRyPERvY3VtZW50PiBjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBGbG9hdFBvaW50IG1fdHJhbnNsYXRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAppbmRleCAxNTc0NzVhLi5jYzBmOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCkBAIC03ODQsNyArNzg0LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIGNvbnRleHRFbGVtZW50
LT5zeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCk7CiB9CiAKLVBhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IFNWR0VsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVu
dFN0eWxlKQorUmVmUHRyPFJlbmRlclN0eWxlPiBTVkdFbGVtZW50OjpjdXN0b21TdHlsZUZvclJl
bmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkKIHsKICAgICBpZiAoIWNvcnJlc3BvbmRp
bmdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBkb2N1bWVudCgpLmVuc3VyZVN0eWxlUmVzb2x2
ZXIoKS5zdHlsZUZvckVsZW1lbnQodGhpcywgJnBhcmVudFN0eWxlKTsKQEAgLTExMDEsNyArMTEw
MSw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdl
JiBjaGFuZ2UpCiAgICAgU1ZHRWxlbWVudEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW5zdGFuY2Vz
T2ZFbGVtZW50KHRoaXMpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBTVkdFbGVtZW50Ojpn
ZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKQorUmVmUHRyPENTU1Zh
bHVlPiBTVkdFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBu
YW1lKQogewogICAgIGlmICghaGFzQXR0cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCA3MzQyNWExLi4zYjI0NDNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIGlzQW5pbWF0YWJsZUNTU1Byb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlV2l0aFNWR0RPTShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29u
c3QgU3RyaW5nJiBuYW1lKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGdldFByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01h
cmtlcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaGFzUmVsYXRpdmVMZW5n
dGhzKCkgY29uc3QgeyByZXR1cm4gIW1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzLmlzRW1w
dHkoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN5bmNocm9uaXplQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0OwogICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplQWxsQW5pbWF0ZWRTVkdBdHRyaWJ1
dGUoU1ZHRWxlbWVudCopOwogIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVy
KFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgdm9pZCBz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwog
ICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCmluZGV4
IDZiMzBhNjUuLmEwNTlkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcApA
QCAtOTEsNyArOTEsNyBAQCBpbmxpbmUgU1ZHUGF0aEVsZW1lbnQ6OlNWR1BhdGhFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkbwogICAgIHJlZ2lzdGVyQW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUGF0aEVsZW1lbnQoKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdQ
YXRoRWxlbWVudD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IFNWR1Bh
dGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKIH0KQEAgLTExNyw5NyArMTE3LDk3IEBAIHVuc2lnbmVkIFNWR1Bh
dGhFbGVtZW50OjpnZXRQYXRoU2VnQXRMZW5ndGgoZmxvYXQgbGVuZ3RoKQogICAgIHJldHVybiBw
YXRoU2VnOwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhTZWdDbG9zZVBhdGg+IFNWR1BhdGhFbGVt
ZW50OjpjcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoKFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQ
dHI8U1ZHUGF0aFNlZ0Nsb3NlUGF0aD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdD
bG9zZVBhdGgoU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4gU1ZHUGF0aFNlZ0Ns
b3NlUGF0aDo6Y3JlYXRlKHRoaXMsIHJvbGUpOwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhTZWdN
b3ZldG9BYnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTW92ZXRvQWJzKGZsb2F0
IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNlZ01vdmV0
b0Ficz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnMoZmxvYXQgeCwg
ZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4gU1ZHUGF0aFNlZ01v
dmV0b0Ficzo6Y3JlYXRlKHRoaXMsIHJvbGUsIHgsIHkpOwogfQogCi1QYXNzUmVmUHRyPFNWR1Bh
dGhTZWdNb3ZldG9SZWw+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVs
KGZsb2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNl
Z01vdmV0b1JlbD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwoZmxv
YXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4gU1ZHUGF0
aFNlZ01vdmV0b1JlbDo6Y3JlYXRlKHRoaXMsIHJvbGUsIHgsIHkpOwogfQogCi1QYXNzUmVmUHRy
PFNWR1BhdGhTZWdMaW5ldG9BYnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTGlu
ZXRvQWJzKGZsb2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8U1ZH
UGF0aFNlZ0xpbmV0b0Ficz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9B
YnMoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4g
U1ZHUGF0aFNlZ0xpbmV0b0Ficzo6Y3JlYXRlKHRoaXMsIHJvbGUsIHgsIHkpOwogfQogCi1QYXNz
UmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9SZWw+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRo
U2VnTGluZXRvUmVsKGZsb2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQ
dHI8U1ZHUGF0aFNlZ0xpbmV0b1JlbD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdM
aW5ldG9SZWwoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICBy
ZXR1cm4gU1ZHUGF0aFNlZ0xpbmV0b1JlbDo6Y3JlYXRlKHRoaXMsIHJvbGUsIHgsIHkpOwogfQog
Ci1QYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnM+IFNWR1BhdGhFbGVtZW50Ojpj
cmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgx
LCBmbG9hdCB5MSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSByb2xlKQorUmVm
UHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5
MSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSByb2xlKQogewogICAgIHJldHVy
biBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzOjpjcmVhdGUodGhpcywgcm9sZSwgeCwgeSwgeDEs
IHkxLCB4MiwgeTIpOwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw+
IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRo
U2VnUm9sZSByb2xlKQorUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw+IFNWR1BhdGhF
bGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSBy
b2xlKQogewogICAgIHJldHVybiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsOjpjcmVhdGUodGhp
cywgcm9sZSwgeCwgeSwgeDEsIHkxLCB4MiwgeTIpOwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljQWJzPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1
cnZldG9RdWFkcmF0aWNBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBT
VkdQYXRoU2VnUm9sZSByb2xlKQorUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJz
PiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMoZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBTVkdQYXRoU2VnUm9sZSByb2xlKQog
ewogICAgIHJldHVybiBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficzo6Y3JlYXRlKHRoaXMs
IHJvbGUsIHgsIHksIHgxLCB5MSk7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNSZWw+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRy
YXRpY1JlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIFNWR1BhdGhTZWdS
b2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWw+IFNWR1BhdGhF
bGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbChmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7CiAgICAgcmV0
dXJuIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsOjpjcmVhdGUodGhpcywgcm9sZSwgeCwg
eSwgeDEsIHkxKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdQYXRoU2VnQXJjQWJzPiBTVkdQYXRoRWxl
bWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0FyY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByMSwg
ZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcs
IFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNlZ0FyY0Ficz4gU1ZHUGF0aEVs
ZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEs
IGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFn
LCBTVkdQYXRoU2VnUm9sZSByb2xlKQogewogICAgIHJldHVybiBTVkdQYXRoU2VnQXJjQWJzOjpj
cmVhdGUodGhpcywgcm9sZSwgeCwgeSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2Vl
cEZsYWcpOwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhTZWdBcmNSZWw+IFNWR1BhdGhFbGVtZW50
OjpjcmVhdGVTVkdQYXRoU2VnQXJjUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHIxLCBmbG9h
dCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywgU1ZH
UGF0aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2VnQXJjUmVsPiBTVkdQYXRoRWxlbWVu
dDo6Y3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByMSwgZmxv
YXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIFNW
R1BhdGhTZWdSb2xlIHJvbGUpCiB7CiAgICAgcmV0dXJuIFNWR1BhdGhTZWdBcmNSZWw6OmNyZWF0
ZSh0aGlzLCByb2xlLCB4LCB5LCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxh
Zyk7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnM+IFNWR1Bh
dGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyhmbG9hdCB4LCBT
VkdQYXRoU2VnUm9sZSByb2xlKQorUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJz
PiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMoZmxv
YXQgeCwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4gU1ZHUGF0aFNlZ0xpbmV0
b0hvcml6b250YWxBYnM6OmNyZWF0ZSh0aGlzLCByb2xlLCB4KTsKIH0KIAotUGFzc1JlZlB0cjxT
VkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1Bh
dGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsKGZsb2F0IHgsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCitS
ZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWw+IFNWR1BhdGhFbGVtZW50OjpjcmVh
dGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbChmbG9hdCB4LCBTVkdQYXRoU2VnUm9sZSBy
b2xlKQogewogICAgIHJldHVybiBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbDo6Y3JlYXRl
KHRoaXMsIHJvbGUsIHgpOwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNh
bEFicz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyhm
bG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlKQorUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9WZXJ0
aWNhbEFicz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFi
cyhmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlKQogewogICAgIHJldHVybiBTVkdQYXRoU2Vn
TGluZXRvVmVydGljYWxBYnM6OmNyZWF0ZSh0aGlzLCByb2xlLCB5KTsKIH0KIAotUGFzc1JlZlB0
cjxTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWw+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQ
YXRoU2VnTGluZXRvVmVydGljYWxSZWwoZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKK1Jl
ZlB0cjxTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWw+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVT
VkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwoZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkK
IHsKICAgICByZXR1cm4gU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsOjpjcmVhdGUodGhpcywg
cm9sZSwgeSk7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFi
cz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSByb2xl
KQorUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnM+IFNWR1BhdGhFbGVtZW50
OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4g
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFiczo6Y3JlYXRlKHRoaXMsIHJvbGUsIHgsIHks
IHgyLCB5Mik7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJl
bD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSByb2xl
KQorUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw+IFNWR1BhdGhFbGVtZW50
OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsKGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4g
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbDo6Y3JlYXRlKHRoaXMsIHJvbGUsIHgsIHks
IHgyLCB5Mik7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9v
dGhBYnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Nt
b290aEFicyhmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlKQorUmVmUHRyPFNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRl
U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMoZmxvYXQgeCwgZmxvYXQgeSwgU1ZH
UGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4gU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0
aWNTbW9vdGhBYnM6OmNyZWF0ZSh0aGlzLCByb2xlLCB4LCB5KTsKIH0KIAotUGFzc1JlZlB0cjxT
VkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0
ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsKGZsb2F0IHgsIGZsb2F0IHksIFNW
R1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9v
dGhSZWw+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Nt
b290aFJlbChmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlKQogewogICAgIHJl
dHVybiBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbDo6Y3JlYXRlKHRoaXMsIHJv
bGUsIHgsIHkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAppbmRleCBiNjRiNGM1
Li5lMGRjNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaApAQCAtNTUsMzEgKzU1
LDMxIEBAIGNsYXNzIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmOwogY2xhc3MgU1ZHUGF0
aEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHR3JhcGhpY3NFbGVtZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNWR1BhdGhF
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCiAg
ICAgZmxvYXQgZ2V0VG90YWxMZW5ndGgoKTsKICAgICBTVkdQb2ludCBnZXRQb2ludEF0TGVuZ3Ro
KGZsb2F0IGRpc3RhbmNlKTsKICAgICB1bnNpZ25lZCBnZXRQYXRoU2VnQXRMZW5ndGgoZmxvYXQg
ZGlzdGFuY2UpOwogCi0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ2xvc2VQYXRoPiBjcmVhdGVT
VkdQYXRoU2VnQ2xvc2VQYXRoKFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVk
Um9sZSk7Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTW92ZXRvQWJzPiBjcmVhdGVTVkdQYXRo
U2VnTW92ZXRvQWJzKGZsb2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRo
U2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTW92ZXRvUmVsPiBj
cmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsKGZsb2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xl
IHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2Vn
TGluZXRvQWJzPiBjcmVhdGVTVkdQYXRoU2VnTGluZXRvQWJzKGZsb2F0IHgsIGZsb2F0IHksIFNW
R1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgUGFzc1JlZlB0
cjxTVkdQYXRoU2VnTGluZXRvUmVsPiBjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsKGZsb2F0IHgs
IGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0g
ICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzPiBjcmVhdGVTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxv
YXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJv
bGUpOwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbD4gY3JlYXRlU1ZH
UGF0aFNlZ0N1cnZldG9DdWJpY1JlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQg
eTEsIGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRl
ZmluZWRSb2xlKTsKLSAgICBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJz
PiBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB4MSwgZmxvYXQgeTEsIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVk
Um9sZSk7Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbD4gY3Jl
YXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eDEsIGZsb2F0IHkxLCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUp
OwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0FyY0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ0FyY0Fi
cyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29s
IGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRo
U2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQXJjUmVsPiBjcmVh
dGVTVkdQYXRoU2VnQXJjUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHIxLCBmbG9hdCByMiwg
ZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywgU1ZHUGF0aFNl
Z1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKLSAgICBQYXNzUmVmUHRyPFNWR1Bh
dGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzPiBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRh
bEFicyhmbG9hdCB4LCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUp
OwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWw+IGNyZWF0ZVNW
R1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsKGZsb2F0IHgsIFNWR1BhdGhTZWdSb2xlIHJvbGUg
PSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGluZXRv
VmVydGljYWxBYnM+IGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyhmbG9hdCB5LCBT
VkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQ
dHI8U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsPiBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVy
dGljYWxSZWwoZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRS
b2xlKTsKLSAgICBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnM+IGNy
ZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJv
bGUpOwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbD4gY3Jl
YXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB4MiwgZmxvYXQgeTIsIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9s
ZSk7Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicz4g
Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMoZmxvYXQgeCwgZmxvYXQg
eSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKLSAgICBQYXNz
UmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsPiBjcmVhdGVTVkdQYXRo
U2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbChmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2Vn
Um9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIFJlZlB0cjxTVkdQYXRoU2Vn
Q2xvc2VQYXRoPiBjcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoKFNWR1BhdGhTZWdSb2xlIHJvbGUg
PSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAgUmVmUHRyPFNWR1BhdGhTZWdNb3ZldG9BYnM+
IGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnMoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1Jv
bGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ01v
dmV0b1JlbD4gY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b1JlbChmbG9hdCB4LCBmbG9hdCB5LCBTVkdQ
YXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIFJlZlB0cjxTVkdQ
YXRoU2VnTGluZXRvQWJzPiBjcmVhdGVTVkdQYXRoU2VnTGluZXRvQWJzKGZsb2F0IHgsIGZsb2F0
IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAgUmVm
UHRyPFNWR1BhdGhTZWdMaW5ldG9SZWw+IGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9SZWwoZmxvYXQg
eCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsK
KyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ0N1
cnZldG9DdWJpY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0
IHgyLCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xl
KTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbD4gY3JlYXRlU1ZHUGF0aFNl
Z0N1cnZldG9DdWJpY1JlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZs
b2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRS
b2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnM+IGNyZWF0ZVNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBm
bG9hdCB5MSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAg
ICBSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWw+IGNyZWF0ZVNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwg
U1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8
U1ZHUGF0aFNlZ0FyY0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ0FyY0FicyhmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9v
bCBzd2VlcEZsYWcsIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7
CisgICAgUmVmUHRyPFNWR1BhdGhTZWdBcmNSZWw+IGNyZWF0ZVNWR1BhdGhTZWdBcmNSZWwoZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJn
ZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnLCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1Vu
ZGVmaW5lZFJvbGUpOworICAgIFJlZlB0cjxTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicz4g
Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMoZmxvYXQgeCwgU1ZHUGF0aFNlZ1Jv
bGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0xp
bmV0b0hvcml6b250YWxSZWw+IGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsKGZs
b2F0IHgsIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAg
UmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicz4gY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0
b1ZlcnRpY2FsQWJzKGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZp
bmVkUm9sZSk7CisgICAgUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbD4gY3JlYXRl
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsKGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUg
PSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAgUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNTbW9vdGhBYnM+IGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0
aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIFJlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21v
b3RoUmVsPiBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsKGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdV
bmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9v
dGhBYnM+IGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKGZsb2F0IHgs
IGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Cisg
ICAgUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsPiBjcmVhdGVTVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbChmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRo
U2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwogCiAgICAgLy8gVXNlZCBpbiB0
aGUgYmluZGluZ3Mgb25seS4KICAgICBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiogcGF0
aFNlZ0xpc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAppbmRleCBi
NGIzZmJkLi5iMzNkYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3Bw
CkBAIC0xOTIsNyArMTkyLDcgQEAgYm9vbCBTVkdTY3JpcHRFbGVtZW50OjpoYXNTb3VyY2VBdHRy
aWJ1dGUoKSBjb25zdAogICAgIHJldHVybiBoYXNBdHRyaWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0
dHIpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IFNWR1NjcmlwdEVsZW1lbnQ6OmNsb25lRWxl
bWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQorUmVmUHRyPEVsZW1lbnQ+IFNWR1Nj
cmlwdEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHU2NyaXB0RWxlbWVudCh0YWdRTmFtZSgpLCBk
b2N1bWVudCgpLCBmYWxzZSwgYWxyZWFkeVN0YXJ0ZWQoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTY3JpcHRFbGVtZW50LmgKaW5kZXggMjNlOTI5ZC4uYWFjOTljNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU2NyaXB0RWxlbWVudC5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSBvdmVycmlkZSB7IFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OmRpc3BhdGNoTG9hZEV2ZW50KHRoaXMpOyB9CiAKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGls
ZHJlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVu
dFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242112</attachid>
            <date>2014-11-21 22:34:28 -0800</date>
            <delta_ts>2014-11-22 01:11:51 -0800</delta_ts>
            <desc>Phase I</desc>
            <filename>bug-138995-phase1.diff</filename>
            <type>text/plain</type>
            <size>228771</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZjQwMTdmLi42MDgxYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTQtMTEtMjEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIENvbnZlcnQgUGFzc1JlZlB0ciByZXR1cm4gdHlwZXMgdG8gUmVmUHRyLgorICAgICAgICA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTM4OTk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cyBDYXJsc3Nvbi4KKworICAgICAgICBDb252ZXJ0IGFuIGFzc29ydG1lbnQgb2YgRE9NIGFuZCBI
VE1MIHJlbGF0ZWQgZnVuY3Rpb25zCisgICAgICAgIHRvIHJldHVybiBSZWZQdHIgaW5zdGVhZCBv
ZiBQYXNzUmVmUHRyLgorCiAyMDE0LTExLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgaU9TIGJ1aWxkIGZpeCBhZnRlciByMTc2NDYyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA1OGJkOTM4Li43
NmFkY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAt
MzY1LDYgKzM2NSwxMSBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIHZpZXct
PndyYXAoZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VD4gcHRyKQoreworICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCwgcHRyLmdldCgpKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFQ+IHB0cikKIHsKICAgICByZXR1cm4g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXgg
NzFkYTljNi4uZTZiNGQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtNTMsMTQgKzUzLDE0IEBAIEF0
dHI6OkF0dHIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHN0CiB7CiB9CiAKLVBhc3NSZWZQdHI8QXR0cj4gQXR0cjo6Y3Jl
YXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCitSZWZQdHI8
QXR0cj4gQXR0cjo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUpCiB7CiAgICAgUmVmUHRyPEF0dHI+IGF0dHIgPSBhZG9wdFJlZihuZXcgQXR0cihlbGVt
ZW50LCBuYW1lKSk7CiAgICAgYXR0ci0+Y3JlYXRlVGV4dENoaWxkKCk7CiAgICAgcmV0dXJuIGF0
dHIucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEF0dHI+IEF0dHI6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCitSZWZQdHI8QXR0cj4gQXR0cjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGFkb3B0UmVmKG5ldyBBdHRyKGRvY3VtZW50LCBuYW1l
LCB2YWx1ZSkpOwogICAgIGF0dHItPmNyZWF0ZVRleHRDaGlsZCgpOwpAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgQXR0cjo6c2V0Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYgdiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgc2V0VmFsdWUodiwgZWMpOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+IEF0dHI6
OmNsb25lTm9kZShib29sIC8qZGVlcCovKQorUmVmUHRyPE5vZGU+IEF0dHI6OmNsb25lTm9kZShi
b29sIC8qZGVlcCovKQogewogICAgIFJlZlB0cjxBdHRyPiBjbG9uZSA9IGFkb3B0UmVmKG5ldyBB
dHRyKGRvY3VtZW50KCksIHF1YWxpZmllZE5hbWUoKSwgdmFsdWUoKSkpOwogICAgIGNsb25lQ2hp
bGROb2RlcyhjbG9uZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCBhN2E4OTQ1Li5jMTBmY2ZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BdHRyLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgTXV0YWJsZVN0eWxlUHJvcGVydGll
czsKIAogY2xhc3MgQXR0ciBmaW5hbCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdHRyPiBjcmVhdGUoRWxlbWVudCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdHRyPiBjcmVhdGUoRG9jdW1lbnQm
LCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CisgICAg
c3RhdGljIFJlZlB0cjxBdHRyPiBjcmVhdGUoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEF0dHI+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKICAgICB2aXJ0dWFsIH5BdHRy
KCk7CiAKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIHF1YWxpZmllZE5hbWUoKS50
b1N0cmluZygpOyB9CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFN0
cmluZyBub2RlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2YWx1ZSgpOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRl
ZXApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRl
ZXApIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzQXR0cmlidXRlTm9kZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxs
b3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ0RBVEFTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24u
Y3BwCmluZGV4IDRiMzk3MmEuLmMzMTI3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DREFUQVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24u
Y3BwCkBAIC0zMSw3ICszMSw3IEBAIGlubGluZSBDREFUQVNlY3Rpb246OkNEQVRBU2VjdGlvbihE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKIH0KIAotUGFzc1JlZlB0
cjxDREFUQVNlY3Rpb24+IENEQVRBU2VjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiBkYXRhKQorUmVmUHRyPENEQVRBU2VjdGlvbj4gQ0RBVEFTZWN0aW9uOjpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDREFUQVNlY3Rpb24oZG9jdW1lbnQsIGRhdGEpKTsKIH0KQEAgLTQ2
LDcgKzQ2LDcgQEAgTm9kZTo6Tm9kZVR5cGUgQ0RBVEFTZWN0aW9uOjpub2RlVHlwZSgpIGNvbnN0
CiAgICAgcmV0dXJuIENEQVRBX1NFQ1RJT05fTk9ERTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBD
REFUQVNlY3Rpb246OmNsb25lTm9kZShib29sIC8qZGVlcCovKQorUmVmUHRyPE5vZGU+IENEQVRB
U2VjdGlvbjo6Y2xvbmVOb2RlKGJvb2wgLypkZWVwKi8pCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShk
b2N1bWVudCgpLCBkYXRhKCkpOwogfQpAQCAtNTYsNyArNTYsNyBAQCBib29sIENEQVRBU2VjdGlv
bjo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLVBhc3NSZWZQdHI8VGV4dD4gQ0RBVEFTZWN0aW9uOjp2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0
cmluZyYgZGF0YSkKK1JlZlB0cjxUZXh0PiBDREFUQVNlY3Rpb246OnZpcnR1YWxDcmVhdGUoY29u
c3QgU3RyaW5nJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQoKSwgZGF0YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmgKaW5kZXggN2U5ODIzZS4uZGU1MmYzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaApAQCAtMjksMTYgKzI5LDE2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ0RBVEFTZWN0aW9uIGZpbmFsIDogcHVibGljIFRleHQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENEQVRBU2VjdGlvbj4gY3JlYXRlKERvY3VtZW50
JiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZlB0cjxDREFUQVNlY3Rpb24+IGNyZWF0
ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIENEQVRBU2VjdGlv
bihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5h
bWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29s
IGRlZXApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29s
IGRlZXApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVU
eXBlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dD4gdmlydHVh
bENyZWF0ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxUZXh0
PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCmluZGV4IDk2MWU4ZjEuLmRlMmRmNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tbWVudC5jcHAKQEAgLTMxLDEyICszMSwxMiBAQCBpbmxpbmUgQ29tbWVu
dDo6Q29tbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKIH0K
IAotUGFzc1JlZlB0cjxDb21tZW50PiBDb21tZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIHRleHQpCitSZWZQdHI8Q29tbWVudD4gQ29tbWVudDo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ29tbWVudChkb2N1bWVudCwgdGV4dCkpOwogfQogCi1QYXNzUmVmUHRyPENvbW1l
bnQ+IENvbW1lbnQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHRleHQpCitSZWZQdHI8Q29tbWVudD4gQ29tbWVudDo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENvbW1lbnQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCB0ZXh0
KSk7CiB9CkBAIC01MSw3ICs1MSw3IEBAIE5vZGU6Ok5vZGVUeXBlIENvbW1lbnQ6Om5vZGVUeXBl
KCkgY29uc3QKICAgICByZXR1cm4gQ09NTUVOVF9OT0RFOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+
IENvbW1lbnQ6OmNsb25lTm9kZShib29sIC8qZGVlcCovKQorUmVmUHRyPE5vZGU+IENvbW1lbnQ6
OmNsb25lTm9kZShib29sIC8qZGVlcCovKQogewogICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQo
KSwgZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCmluZGV4IGMxYTQ5ZDUuLjU2NjhiZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbW1lbnQuaApAQCAtMjksMTUgKzI5LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29tbWVudCBmaW5hbCA6IHB1YmxpYyBDaGFyYWN0ZXJEYXRhIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb21tZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBT
dHJpbmcmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb21tZW50PiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBSZWZQdHI8Q29tbWVu
dD4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZlB0cjxD
b21tZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYpOwog
CiBwcml2YXRlOgogICAgIENvbW1lbnQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKIAogICAg
IHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBO
b2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNGQ0YmVjNC4uM2Y2M2FhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtOTkzLDcgKzk5Myw3IEBAIFJlZlB0cjxOb2Rl
TGlzdD4gQ29udGFpbmVyTm9kZTo6cXVlcnlTZWxlY3RvckFsbChjb25zdCBTdHJpbmcmIHNlbGVj
dG9ycywgRXhjZXB0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IENvbnRhaW5lck5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxOYW1lKQorUmVmUHRyPE5vZGVMaXN0PiBDb250YWluZXJOb2RlOjpnZXRFbGVtZW50
c0J5VGFnTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAgICBpZiAobG9j
YWxOYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwMDMsNyArMTAwMyw3IEBA
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IENvbnRhaW5lck5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jCiAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5z
dXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVXaXRoQXRvbWljTmFtZTxUYWdOb2RlTGlzdD4oKnRoaXMs
IGxvY2FsTmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZUxpc3Q+IENvbnRhaW5lck5vZGU6Omdl
dEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQorUmVmUHRyPE5vZGVMaXN0PiBDb250YWluZXJO
b2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
VVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAgICBpZiAobG9jYWxOYW1l
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwMTQsMTcgKzEwMTQsMTcgQEAgUGFz
c1JlZlB0cjxOb2RlTGlzdD4gQ29udGFpbmVyTm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhj
b25zdCBBdG9taWNTdHJpbmcmIG4KICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVO
b2RlTGlzdHMoKS5hZGRDYWNoZVdpdGhRdWFsaWZpZWROYW1lKCp0aGlzLCBuYW1lc3BhY2VVUkku
aXNFbXB0eSgpID8gbnVsbEF0b20gOiBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7CiB9CiAKLVBh
c3NSZWZQdHI8Tm9kZUxpc3Q+IENvbnRhaW5lck5vZGU6OmdldEVsZW1lbnRzQnlOYW1lKGNvbnN0
IFN0cmluZyYgZWxlbWVudE5hbWUpCitSZWZQdHI8Tm9kZUxpc3Q+IENvbnRhaW5lck5vZGU6Omdl
dEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudE5hbWUpCiB7CiAgICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVXaXRoQXRvbWljTmFt
ZTxOYW1lTm9kZUxpc3Q+KCp0aGlzLCBlbGVtZW50TmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8Tm9k
ZUxpc3Q+IENvbnRhaW5lck5vZGU6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBjbGFzc05hbWVzKQorUmVmUHRyPE5vZGVMaXN0PiBDb250YWluZXJOb2RlOjpnZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lcykKIHsKICAg
ICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZVdpdGhB
dG9taWNOYW1lPENsYXNzTm9kZUxpc3Q+KCp0aGlzLCBjbGFzc05hbWVzKTsKIH0KIAotUGFzc1Jl
ZlB0cjxSYWRpb05vZGVMaXN0PiBDb250YWluZXJOb2RlOjpyYWRpb05vZGVMaXN0KGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSkKK1JlZlB0cjxSYWRpb05vZGVMaXN0PiBDb250YWluZXJOb2RlOjpy
YWRpb05vZGVMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShIVE1MTmFtZXM6OmZvcm1UYWcpIHx8IGhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmaWVs
ZHNldFRhZykpOwogICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygp
LmFkZENhY2hlV2l0aEF0b21pY05hbWU8UmFkaW9Ob2RlTGlzdD4oKnRoaXMsIG5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggNWUxODJmNy4uMDdkNzRiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0xMzQsMTEgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAg
RWxlbWVudCogcXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9u
Q29kZSYpOwogICAgIFJlZlB0cjxOb2RlTGlzdD4gcXVlcnlTZWxlY3RvckFsbChjb25zdCBTdHJp
bmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxOb2RlTGlz
dD4gZ2V0RWxlbWVudHNCeVRhZ05hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpOwotICAgIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudE5h
bWUpOwotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlDbGFzc05hbWUoY29u
c3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWVzKTsKLSAgICBQYXNzUmVmUHRyPFJhZGlvTm9kZUxp
c3Q+IHJhZGlvTm9kZUxpc3QoY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgUmVmUHRyPE5vZGVM
aXN0PiBnZXRFbGVtZW50c0J5VGFnTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICBSZWZQ
dHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKTsKKyAgICBSZWZQdHI8
Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudE5hbWUpOwor
ICAgIFJlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBBdG9taWNT
dHJpbmcmIGNsYXNzTmFtZXMpOworICAgIFJlZlB0cjxSYWRpb05vZGVMaXN0PiByYWRpb05vZGVM
aXN0KGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ29u
dGFpbmVyTm9kZShEb2N1bWVudCYsIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIp
OwpAQCAtMjYyLDcgKzI2Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBSZXR1cm5zIDAg
aWYgdGhlcmUgaXMgbm8gbmV4dCBOb2RlLgotICAgIFBhc3NSZWZQdHI8Tm9kZT4gbmV4dE5vZGUo
KQorICAgIFJlZlB0cjxOb2RlPiBuZXh0Tm9kZSgpCiAgICAgewogICAgICAgICBpZiAoTElLRUxZ
KCFoYXNTbmFwc2hvdCgpKSkgewogICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1
cnJlbnROb2RlLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
Y3BwCmluZGV4IDhjYjEyY2IuLjdiN2Q3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxl
bWVudGF0aW9uLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIGJvb2wgRE9NSW1wbGVtZW50YXRpb246
Omhhc0ZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPiBET01JbXBs
ZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFt
ZSwKK1JlZlB0cjxEb2N1bWVudFR5cGU+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dFR5cGUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLAogICAgIGNvbnN0IFN0cmluZyYgcHVi
bGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IFN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBET01JbXBsZW1l
bnRhdGlvbiogRE9NSW1wbGVtZW50YXRpb246OmdldEludGVyZmFjZShjb25zdCBTdHJpbmcmIC8q
ZmVhdHVyZSovKQogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50PiBET01J
bXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkks
CitSZWZQdHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25z
dCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwKICAgICBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUs
IERvY3VtZW50VHlwZSogZG9jdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRy
PERvY3VtZW50PiBkb2M7CkBAIC0yMzQsMTAgKzIzNCwxMCBAQCBQYXNzUmVmUHRyPERvY3VtZW50
PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3Bh
Y2VVUgogICAgIGlmIChkb2N1bWVudEVsZW1lbnQpCiAgICAgICAgIGRvYy0+YXBwZW5kQ2hpbGQo
ZG9jdW1lbnRFbGVtZW50LnJlbGVhc2UoKSk7CiAKLSAgICByZXR1cm4gZG9jLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gZG9jOwogfQogCi1QYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IERPTUltcGxl
bWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPENTU1N0eWxlU2hlZXQ+IERPTUltcGxl
bWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIC8vIEZJWE1FOiBUaXRsZSBzaG91bGQg
YmUgc2V0LgogICAgIC8vIEZJWE1FOiBNZWRpYSBjb3VsZCBoYXZlIHdyb25nIHN5bnRheCwgaW4g
d2hpY2ggY2FzZSB3ZSBzaG91bGQgZ2VuZXJhdGUgYW4gZXhjZXB0aW9uLgpAQCAtMjg4LDcgKzI4
OCw3IEBAIGJvb2wgRE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPEhUTUxEb2N1
bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcm
IHRpdGxlKQorUmVmUHRyPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhU
TUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIFJlZlB0cjxIVE1MRG9jdW1l
bnQ+IGQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAgICAgZC0+b3BlbigpOwpA
QCAtMjk2LDEwICsyOTYsMTAgQEAgUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVu
dGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXQKICAgICBpZiAoIXRp
dGxlLmlzTnVsbCgpKQogICAgICAgICBkLT5zZXRUaXRsZSh0aXRsZSk7CiAgICAgZC0+c2V0U2Vj
dXJpdHlPcmlnaW4obV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKTsKLSAgICByZXR1cm4gZC5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIGQ7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+IERPTUlt
cGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiB1cmwpCitSZWZQdHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9u
OjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgLy8gUGx1Z2lucyBjYW5ub3QgdGFrZSBIVE1MIGFuZCBYSFRNTCBm
cm9tIHVzLCBhbmQgd2UgZG9uJ3QgZXZlbiBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHBsdWdpbiBk
YXRhYmFzZSBmb3IgdGhvc2UuCiAgICAgaWYgKHR5cGUgPT0gInRleHQvaHRtbCIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCmluZGV4IDdjYTU4ZDUuLmJhZjIxOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5j
bHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDI2ICs0NiwyNSBAQCBjbGFz
cyBET01JbXBsZW1lbnRhdGlvbiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewogcHVibGljOgog
ICAgIGV4cGxpY2l0IERPTUltcGxlbWVudGF0aW9uKERvY3VtZW50Jik7CiAKLSAgICAKICAgICB2
b2lkIHJlZigpIHsgbV9kb2N1bWVudC5yZWYoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IG1fZG9j
dW1lbnQuZGVyZWYoKTsgfQogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9j
dW1lbnQ7IH0KIAogICAgIC8vIERPTSBtZXRob2RzICYgYXR0cmlidXRlcyBmb3IgRE9NSW1wbGVt
ZW50YXRpb24KICAgICBzdGF0aWMgYm9vbCBoYXNGZWF0dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVy
ZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKLSAgICBQYXNzUmVmUHRyPERvY3VtZW50VHlwZT4g
Y3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgU3Ry
aW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRUeXBlPiBjcmVhdGVEb2N1bWVudFR5
cGUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25zdCBTdHJpbmcmIHB1YmxpY0lkLCBj
b25zdCBTdHJpbmcmIHN5c3RlbUlkLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPERvY3Vt
ZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3Ry
aW5nJiBxdWFsaWZpZWROYW1lLCBEb2N1bWVudFR5cGUqLCBFeGNlcHRpb25Db2RlJik7CiAKICAg
ICBET01JbXBsZW1lbnRhdGlvbiogZ2V0SW50ZXJmYWNlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSk7
CiAKICAgICAvLyBGcm9tIHRoZSBET01JbXBsZW1lbnRhdGlvbkNTUyBpbnRlcmZhY2UKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBtZWRpYSwgRXhjZXB0aW9uQ29kZSYpOwogCiAg
ICAgLy8gRnJvbSB0aGUgSFRNTERPTUltcGxlbWVudGF0aW9uIGludGVyZmFjZQotICAgIFBhc3NS
ZWZQdHI8SFRNTERvY3VtZW50PiBjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRs
ZSk7CisgICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0
cmluZyYgdGl0bGUpOwogCiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9NKQot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBSZWZQdHI8RG9j
dW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIEZyYW1lKiwgY29u
c3QgVVJMJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1hNTE1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29s
IGlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggMzc0ODNjZS4uMzFjMTc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC01NjUsNyArNTY1LDcgQEAgc3RhdGljIGJvb2wgaXNBdHRyaWJ1dGVPbkFsbE93bmVycyhjb25z
dCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUsIGNvbnMKIH0KICNlbmRpZgogCi1Q
YXNzUmVmUHRyPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpCitSZWZQdHI8RG9jdW1lbnQ+IERvY3VtZW50OjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50
ID0gYWRvcHRSZWYobmV3IERvY3VtZW50KG51bGxwdHIsIFVSTCgpKSk7CiAgICAgZG9jdW1lbnQt
PnNldFNlY3VyaXR5T3JpZ2luKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7CkBAIC04NDgsNyAr
ODQ4LDcgQEAgdm9pZCBEb2N1bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdl
JiBjaGFuZ2UpCiAgICAgY2xlYXJTdHlsZVJlc29sdmVyKCk7CiB9CiAKLVBhc3NSZWZQdHI8RWxl
bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVu
dChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
ICghaXNWYWxpZE5hbWUobmFtZSkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9F
UlI7CkBAIC04NjEsMjIgKzg2MSwyMiBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50Ojpj
cmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQwogICAgIHJl
dHVybiBjcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20sIG5hbWUsIG51bGxBdG9t
KSwgZmFsc2UpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERvY3VtZW50Ojpj
cmVhdGVEb2N1bWVudEZyYWdtZW50KCkKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVu
dDo6Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCiB7CiAgICAgcmV0dXJuIERvY3VtZW50RnJhZ21l
bnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKIH0KIAotUGFzc1JlZlB0cjxUZXh0PiBEb2N1bWVudDo6
Y3JlYXRlVGV4dE5vZGUoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmUHRyPFRleHQ+IERvY3VtZW50
OjpjcmVhdGVUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgcmV0dXJuIFRleHQ6
OmNyZWF0ZSgqdGhpcywgZGF0YSk7CiB9CiAKLVBhc3NSZWZQdHI8Q29tbWVudD4gRG9jdW1lbnQ6
OmNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmUHRyPENvbW1lbnQ+IERvY3Vt
ZW50OjpjcmVhdGVDb21tZW50KGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICByZXR1cm4gQ29t
bWVudDo6Y3JlYXRlKCp0aGlzLCBkYXRhKTsKIH0KIAotUGFzc1JlZlB0cjxDREFUQVNlY3Rpb24+
IERvY3VtZW50OjpjcmVhdGVDREFUQVNlY3Rpb24oY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRp
b25Db2RlJiBlYykKK1JlZlB0cjxDREFUQVNlY3Rpb24+IERvY3VtZW50OjpjcmVhdGVDREFUQVNl
Y3Rpb24oY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
aXNIVE1MRG9jdW1lbnQoKSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwpAQCAt
ODg1LDcgKzg4NSw3IEBAIFBhc3NSZWZQdHI8Q0RBVEFTZWN0aW9uPiBEb2N1bWVudDo6Y3JlYXRl
Q0RBVEFTZWN0aW9uKGNvbnN0IFN0cmluZyYgZGF0YSwgRXhjZXB0CiAgICAgcmV0dXJuIENEQVRB
U2VjdGlvbjo6Y3JlYXRlKCp0aGlzLCBkYXRhKTsKIH0KIAotUGFzc1JlZlB0cjxQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24+IERvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29uc3Qg
U3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCitS
ZWZQdHI8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBEb2N1bWVudDo6Y3JlYXRlUHJvY2Vzc2luZ0lu
c3RydWN0aW9uKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRhdGEsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmICghaXNWYWxpZE5hbWUodGFyZ2V0KSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKQEAgLTg5OCw3ICs4OTgsNyBAQCBQYXNzUmVm
UHRyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gRG9jdW1lbnQ6OmNyZWF0ZVByb2Nlc3NpbmdJbnN0
cnVjdGlvbihjb25zdCBTdAogICAgIHJldHVybiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNyZWF0
ZSgqdGhpcywgdGFyZ2V0LCBkYXRhKTsKIH0KIAotUGFzc1JlZlB0cjxFbnRpdHlSZWZlcmVuY2U+
IERvY3VtZW50OjpjcmVhdGVFbnRpdHlSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNl
cHRpb25Db2RlJiBlYykKK1JlZlB0cjxFbnRpdHlSZWZlcmVuY2U+IERvY3VtZW50OjpjcmVhdGVF
bnRpdHlSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBpZiAoIWlzVmFsaWROYW1lKG5hbWUpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9DSEFS
QUNURVJfRVJSOwpAQCAtOTExLDE4ICs5MTEsMTggQEAgUGFzc1JlZlB0cjxFbnRpdHlSZWZlcmVu
Y2U+IERvY3VtZW50OjpjcmVhdGVFbnRpdHlSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBuYW1lLAog
ICAgIHJldHVybiBFbnRpdHlSZWZlcmVuY2U6OmNyZWF0ZSgqdGhpcywgbmFtZSk7CiB9CiAKLVBh
c3NSZWZQdHI8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb25zdCBTdHJp
bmcmIHRleHQpCitSZWZQdHI8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShj
b25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgcmV0dXJuIFRleHQ6OmNyZWF0ZUVkaXRpbmdUZXh0
KCp0aGlzLCB0ZXh0KTsKIH0KIAotUGFzc1JlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBEb2N1
bWVudDo6Y3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbigpCitSZWZQdHI8Q1NTU3R5bGVEZWNsYXJh
dGlvbj4gRG9jdW1lbnQ6OmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKQogewogICAgIFJlZjxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0eVNldChNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
OjpjcmVhdGUoKSk7CiAgICAgcmV0dXJuIHByb3BlcnR5U2V0LT5lbnN1cmVDU1NTdHlsZURlY2xh
cmF0aW9uKCk7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmltcG9ydE5vZGUoTm9k
ZSogaW1wb3J0ZWROb2RlLCBib29sIGRlZXAsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPE5v
ZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7CiAgICAgCkBAIC0xMDA0LDcgKzEwMDQs
NyBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVk
Tm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogfQogCiAKLVBhc3NSZWZQdHI8Tm9kZT4gRG9j
dW1lbnQ6OmFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNv
dXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFzb3VyY2UpIHsKICAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTEwODAsNyArMTA4MCw3IEBAIGJvb2wgRG9jdW1l
bnQ6Omhhc1ZhbGlkTmFtZXNwYWNlRm9yQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBx
TmFtZSkKIH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBpbiBhIHBvc3NpYmxl
IEVsZW1lbnRGYWN0b3J5IGNsYXNzLgotUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3Jl
YXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBib29sIGNyZWF0ZWRCeVBhcnNl
cikKK1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAgICBSZWZQdHI8RWxlbWVu
dD4gZWxlbWVudDsKIApAQCAtMTExNyw3ICsxMTE3LDcgQEAgYm9vbCBEb2N1bWVudDo6Y3NzQ29t
cG9zaXRpbmdFbmFibGVkKCkgY29uc3QKIAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKIAotUGFz
c1JlZlB0cjxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiBEb2N1bWVudDo6d2Via2l0R2V0TmFtZWRG
bG93cygpCitSZWZQdHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OndlYmtpdEdl
dE5hbWVkRmxvd3MoKQogewogICAgIGlmICghY3NzUmVnaW9uc0VuYWJsZWQoKSB8fCAhcmVuZGVy
VmlldygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExMzcsNyArMTEzNyw3IEBAIE5h
bWVkRmxvd0NvbGxlY3Rpb24mIERvY3VtZW50OjpuYW1lZEZsb3dzKCkKICAgICByZXR1cm4gKm1f
bmFtZWRGbG93czsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxl
bWVudE5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmll
ZE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVh
dGVFbGVtZW50TlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVh
bGlmaWVkTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgU3RyaW5nIHByZWZpeCwgbG9j
YWxOYW1lOwogICAgIGlmICghcGFyc2VRdWFsaWZpZWROYW1lKHF1YWxpZmllZE5hbWUsIHByZWZp
eCwgbG9jYWxOYW1lLCBlYykpCkBAIC0xNDI1LDEyICsxNDI1LDEyIEBAIEVsZW1lbnQqIERvY3Vt
ZW50OjplbGVtZW50RnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCkKICAg
ICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CiB9CiAKLVBhc3NSZWZQdHI8UmFuZ2U+
IERvY3VtZW50OjpjYXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSkKK1JlZlB0cjxSYW5n
ZT4gRG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KQogewogICAgIHJl
dHVybiBjYXJldFJhbmdlRnJvbVBvaW50KExheW91dFBvaW50KHgsIHkpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxSYW5nZT4gRG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmIGNsaWVudFBvaW50KQorUmVmUHRyPFJhbmdlPiBEb2N1bWVudDo6Y2FyZXRSYW5nZUZyb21Q
b2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQpCiB7CiAgICAgaWYgKCFoYXNMaXZp
bmdSZW5kZXJUcmVlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTY4MSwxMiArMTY4
MSwxMiBAQCBTZXR0aW5ncyogRG9jdW1lbnQ6OnNldHRpbmdzKCkgY29uc3QKICAgICByZXR1cm4g
bV9mcmFtZSA/ICZtX2ZyYW1lLT5zZXR0aW5ncygpIDogbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0
cjxSYW5nZT4gRG9jdW1lbnQ6OmNyZWF0ZVJhbmdlKCkKK1JlZlB0cjxSYW5nZT4gRG9jdW1lbnQ6
OmNyZWF0ZVJhbmdlKCkKIHsKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZSgqdGhpcyk7CiB9CiAK
LVBhc3NSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBEb2N1bWVudDo6Y3JlYXRlTm9kZUl0ZXJhdG9yKE5v
ZGUqIHJvb3QsIHVuc2lnbmVkIHdoYXRUb1Nob3csIAorUmVmUHRyPE5vZGVJdGVyYXRvcj4gRG9j
dW1lbnQ6OmNyZWF0ZU5vZGVJdGVyYXRvcihOb2RlKiByb290LCB1bnNpZ25lZCB3aGF0VG9TaG93
LCAKICAgICBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IGZpbHRlciwgYm9vbCBleHBhbmRFbnRpdHlS
ZWZlcmVuY2VzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIXJvb3QpIHsKQEAgLTE2
OTYsNyArMTY5Niw3IEBAIFBhc3NSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBEb2N1bWVudDo6Y3JlYXRl
Tm9kZUl0ZXJhdG9yKE5vZGUqIHJvb3QsIHVuc2lnbmVkIHdoYXRUCiAgICAgcmV0dXJuIE5vZGVJ
dGVyYXRvcjo6Y3JlYXRlKHJvb3QsIHdoYXRUb1Nob3csIGZpbHRlciwgZXhwYW5kRW50aXR5UmVm
ZXJlbmNlcyk7CiB9CiAKLVBhc3NSZWZQdHI8VHJlZVdhbGtlcj4gRG9jdW1lbnQ6OmNyZWF0ZVRy
ZWVXYWxrZXIoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFRvU2hvdywgCitSZWZQdHI8VHJlZVdh
bGtlcj4gRG9jdW1lbnQ6OmNyZWF0ZVRyZWVXYWxrZXIoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hh
dFRvU2hvdywgCiAgICAgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiBmaWx0ZXIsIGJvb2wgZXhwYW5k
RW50aXR5UmVmZXJlbmNlcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFyb290KSB7
CkBAIC0yMjQzLDcgKzIyNDMsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRWaXN1YWxseU9yZGVyZWQo
KQogICAgICAgICByZW5kZXJWaWV3KCktPnN0eWxlKCkuc2V0UlRMT3JkZXJpbmcoVmlzdWFsT3Jk
ZXIpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBEb2N1bWVudDo6Y3JlYXRlUGFy
c2VyKCkKK1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7
CiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IHBhc3MgdGhlIGZyYW1lIGluc3Rl
YWQKICAgICByZXR1cm4gWE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSgqdGhpcywgdmlldygpKTsK
QEAgLTMxODksMTYgKzMxODksMTYgQEAgYm9vbCBEb2N1bWVudDo6Y2FuUmVwbGFjZUNoaWxkKE5v
ZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFz
c1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6Y2xvbmVOb2RlKGJvb2wgZGVlcCkKK1JlZlB0cjxOb2Rl
PiBEb2N1bWVudDo6Y2xvbmVOb2RlKGJvb2wgZGVlcCkKIHsKICAgICBSZWZQdHI8RG9jdW1lbnQ+
IGNsb25lID0gY2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbigpOwogICAgIGNsb25lLT5jbG9u
ZURhdGFGcm9tRG9jdW1lbnQoKnRoaXMpOwogICAgIGlmIChkZWVwKQogICAgICAgICBjbG9uZUNo
aWxkTm9kZXMoY2xvbmUuZ2V0KCkpOwotICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGNsb25lOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50PiBEb2N1bWVudDo6Y2xvbmVE
b2N1bWVudFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0CitSZWZQdHI8RG9jdW1lbnQ+IERvY3VtZW50
OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNY
SFRNTERvY3VtZW50KCkgPyBjcmVhdGVYSFRNTChudWxscHRyLCB1cmwoKSkgOiBjcmVhdGUobnVs
bHB0ciwgdXJsKCkpOwogfQpAQCAtMzgxOSw3ICszODE5LDcgQEAgdm9pZCBEb2N1bWVudDo6ZW5x
dWV1ZU92ZXJmbG93RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgbV9ldmVudFF1
ZXVlLmVucXVldWVFdmVudChldmVudCk7CiB9CiAKLVBhc3NSZWZQdHI8RXZlbnQ+IERvY3VtZW50
OjpjcmVhdGVFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CitSZWZQdHI8RXZlbnQ+IERvY3VtZW50OjpjcmVhdGVFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50
VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IEV2
ZW50RmFjdG9yeTo6Y3JlYXRlKGV2ZW50VHlwZSk7CiAgICAgaWYgKGV2ZW50KQpAQCAtNDQ4Niwx
MiArNDQ4NiwxMiBAQCBEb2N1bWVudCYgRG9jdW1lbnQ6OnRvcERvY3VtZW50KCkgY29uc3QKICAg
ICByZXR1cm4gKmRvY3VtZW50OwogfQogCi1QYXNzUmVmUHRyPEF0dHI+IERvY3VtZW50OjpjcmVh
dGVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0
cjxBdHRyPiBEb2N1bWVudDo6Y3JlYXRlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUF0dHJpYnV0ZU5TKFN0cmluZygp
LCBuYW1lLCBlYywgdHJ1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8QXR0cj4gRG9jdW1lbnQ6OmNyZWF0
ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1
YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBib29sIHNob3VsZElnbm9yZU5hbWVzcGFj
ZUNoZWNrcykKK1JlZlB0cjxBdHRyPiBEb2N1bWVudDo6Y3JlYXRlQXR0cmlidXRlTlMoY29uc3Qg
U3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMsIGJvb2wgc2hvdWxkSWdub3JlTmFtZXNwYWNlQ2hlY2tzKQogewogICAgIFN0
cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKICAgICBpZiAoIXBhcnNlUXVhbGlmaWVkTmFtZShxdWFs
aWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpKQpAQCAtNDUyNCw2MyArNDUyNCw2MyBA
QCBib29sIERvY3VtZW50OjpoYXNTVkdSb290Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3Vt
ZW50RWxlbWVudCgpICYmIGRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpz
dmdUYWcpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW5zdXJl
Q2FjaGVkQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSB0eXBlKQorUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiBEb2N1bWVudDo6ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSB0eXBl
KQogewogICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENh
Y2hlZENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb24+KCp0aGlzLCB0eXBlKTsKIH0KIAotUGFzc1Jl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmltYWdlcygpCitSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+IERvY3VtZW50OjppbWFnZXMoKQogewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xs
ZWN0aW9uKERvY0ltYWdlcyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3Vt
ZW50OjphcHBsZXRzKCkKK1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFwcGxldHMo
KQogewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY0FwcGxldHMpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW1iZWRzKCkKK1JlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmVtYmVkcygpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZENvbGxlY3Rpb24oRG9jRW1iZWRzKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlv
bj4gRG9jdW1lbnQ6OnBsdWdpbnMoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6
cGx1Z2lucygpCiB7CiAgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgZW1iZWRzKCkgcmVxdWly
ZWQgZm9yIHRoZSBKUyBET00gYmluZGluZ3MuCiAgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxl
Y3Rpb24oRG9jRW1iZWRzKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1l
bnQ6OnNjcmlwdHMoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6c2NyaXB0cygp
CiB7CiAgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jU2NyaXB0cyk7CiB9CiAK
LVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpsaW5rcygpCitSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IERvY3VtZW50OjpsaW5rcygpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNhY2hl
ZENvbGxlY3Rpb24oRG9jTGlua3MpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBE
b2N1bWVudDo6Zm9ybXMoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6Zm9ybXMo
KQogewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY0Zvcm1zKTsKIH0KIAot
UGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFuY2hvcnMoKQorUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YW5jaG9ycygpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZENvbGxlY3Rpb24oRG9jQW5jaG9ycyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IERvY3VtZW50OjphbGwoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YWxs
KCkKIHsKICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRD
YWNoZWRDb2xsZWN0aW9uPEhUTUxBbGxDb2xsZWN0aW9uPigqdGhpcywgRG9jQWxsKTsKIH0KIAot
UGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OndpbmRvd05hbWVkSXRlbXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6
d2luZG93TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxX
aW5kb3dOYW1lQ29sbGVjdGlvbj4oKnRoaXMsIFdpbmRvd05hbWVkSXRlbXMsIG5hbWUpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZG9jdW1lbnROYW1lZEl0ZW1z
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1l
bnQ6OmRvY3VtZW50TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CiAgICAg
cmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVj
dGlvbjxEb2N1bWVudE5hbWVDb2xsZWN0aW9uPigqdGhpcywgRG9jdW1lbnROYW1lZEl0ZW1zLCBu
YW1lKTsKIH0KQEAgLTQ2NTMsNyArNDY1Myw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzVGVsZXBob25l
TnVtYmVyUGFyc2luZ0FsbG93ZWQoKSBjb25zdAogfQogI2VuZGlmCiAKLVBhc3NSZWZQdHI8WFBh
dGhFeHByZXNzaW9uPiBEb2N1bWVudDo6Y3JlYXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sCitSZWZQdHI8WFBhdGhFeHByZXNzaW9uPiBEb2N1bWVudDo6Y3JlYXRlRXhwcmVz
c2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
eGNlcHRpb25Db2RlJiBlYykKIHsKQEAgLTQ2NjIsMTQgKzQ2NjIsMTQgQEAgUGFzc1JlZlB0cjxY
UGF0aEV4cHJlc3Npb24+IERvY3VtZW50OjpjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYg
ZXhwcmVzc2lvbiwKICAgICByZXR1cm4gbV94cGF0aEV2YWx1YXRvci0+Y3JlYXRlRXhwcmVzc2lv
bihleHByZXNzaW9uLCByZXNvbHZlciwgZWMpOwogfQogCi1QYXNzUmVmUHRyPFhQYXRoTlNSZXNv
bHZlcj4gRG9jdW1lbnQ6OmNyZWF0ZU5TUmVzb2x2ZXIoTm9kZSogbm9kZVJlc29sdmVyKQorUmVm
UHRyPFhQYXRoTlNSZXNvbHZlcj4gRG9jdW1lbnQ6OmNyZWF0ZU5TUmVzb2x2ZXIoTm9kZSogbm9k
ZVJlc29sdmVyKQogewogICAgIGlmICghbV94cGF0aEV2YWx1YXRvcikKICAgICAgICAgbV94cGF0
aEV2YWx1YXRvciA9IFhQYXRoRXZhbHVhdG9yOjpjcmVhdGUoKTsKICAgICByZXR1cm4gbV94cGF0
aEV2YWx1YXRvci0+Y3JlYXRlTlNSZXNvbHZlcihub2RlUmVzb2x2ZXIpOwogfQogCi1QYXNzUmVm
UHRyPFhQYXRoUmVzdWx0PiBEb2N1bWVudDo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLAorUmVmUHRyPFhQYXRoUmVzdWx0PiBEb2N1bWVudDo6ZXZhbHVhdGUoY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5vZGUqIGNvbnRleHROb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZSwKQEAgLTUxMjIsNyArNTEy
Miw3IEBAIFN0cmluZyBEb2N1bWVudDo6ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhj
b25zdCBTdHJpbmcmIHN0cikgY29uc3QKICAgICByZXR1cm4gc3RyOwogfQogCi1QYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IERvY3VtZW50OjpkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyKSBjb25zdAorUmVmUHRyPFN0cmluZ0ltcGw+IERvY3Vt
ZW50OjpkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gc3RyKSBjb25zdAogewogICAgIGlmIChtX2RlY29kZXIpCiAgICAgICAgIHJldHVybiBtX2Rl
Y29kZXItPmVuY29kaW5nKCkuZGlzcGxheVN0cmluZyhzdHIpOwpAQCAtNTgxNyw3ICs1ODE3LDcg
QEAgdm9pZCBEb2N1bWVudDo6c2VuZFdpbGxSZXZlYWxFZGdlRXZlbnRzSWZOZWVkZWQoY29uc3Qg
SW50UG9pbnQmIG9sZFBvc2l0aW9uLCBjb24KIAogI2lmICFQTEFURk9STShJT1MpCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKLVBhc3NSZWZQdHI8VG91Y2g+IERvY3VtZW50OjpjcmVhdGVUb3Vj
aChET01XaW5kb3cqIHdpbmRvdywgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGlkZW50aWZpZXIs
IGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRp
dXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UsIEV4Y2Vw
dGlvbkNvZGUmKSBjb25zdAorUmVmUHRyPFRvdWNoPiBEb2N1bWVudDo6Y3JlYXRlVG91Y2goRE9N
V2luZG93KiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBpZGVudGlmaWVyLCBpbnQg
cGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwg
aW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlLCBFeGNlcHRpb25D
b2RlJikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgZnJvbSB0aGUgZG9j
dW1lbnRhdGlvbiBhdAogICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkv
c2FmYXJpLyNkb2N1bWVudGF0aW9uL1VzZXJFeHBlcmllbmNlL1JlZmVyZW5jZS9Eb2N1bWVudEFk
ZGl0aW9uc1JlZmVyZW5jZS9Eb2N1bWVudEFkZGl0aW9ucy9Eb2N1bWVudEFkZGl0aW9ucy5odG1s
CkBAIC02MTg4LDcgKzYxODgsNyBAQCBEb2N1bWVudCYgRG9jdW1lbnQ6OmVuc3VyZVRlbXBsYXRl
RG9jdW1lbnQoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLVBhc3NS
ZWZQdHI8Rm9udExvYWRlcj4gRG9jdW1lbnQ6OmZvbnRzKCkKK1JlZlB0cjxGb250TG9hZGVyPiBE
b2N1bWVudDo6Zm9udHMoKQogewogICAgIGlmICghbV9mb250bG9hZGVyKQogICAgICAgICBtX2Zv
bnRsb2FkZXIgPSBGb250TG9hZGVyOjpjcmVhdGUodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDI2MDk2NzAuLjkyZWY3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0yNTcsMTkgKzI1
NywxOSBAQCBlbnVtIGNsYXNzIERvY3VtZW50Q29tcGF0aWJpbGl0eU1vZGUgOiB1bnNpZ25lZCBj
aGFyIHsKIAogY2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSwgcHVibGljIFRy
ZWVTY29wZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCkKKyAgICBzdGF0aWMgUmVmUHRyPERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRG9jdW1l
bnQoZnJhbWUsIHVybCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4g
Y3JlYXRlWEhUTUwoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVm
UHRyPERvY3VtZW50PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEb2N1bWVudChmcmFtZSwgdXJsLCBY
SFRNTERvY3VtZW50Q2xhc3MpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1l
bnQ+IGNyZWF0ZU5vblJlbmRlcmVkUGxhY2Vob2xkZXIoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCkKKyAgICBzdGF0aWMgUmVmUHRyPERvY3VtZW50PiBjcmVhdGVOb25SZW5kZXJlZFBsYWNl
aG9sZGVyKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IERvY3VtZW50KGZyYW1lLCB1cmwsIERlZmF1bHREb2N1bWVudENsYXNz
LCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERvY3VtZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHN0YXRpYyBS
ZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICB2
aXJ0dWFsIH5Eb2N1bWVudCgpOwogCkBAIC00MjEsMjQgKzQyMSwyNCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGhhc01hbmlmZXN0KCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzc1Jl
ZlB0cjxUZXh0PiBjcmVhdGVUZXh0Tm9kZShjb25zdCBTdHJpbmcmIGRhdGEpOwotICAgIFBhc3NS
ZWZQdHI8Q29tbWVudD4gY3JlYXRlQ29tbWVudChjb25zdCBTdHJpbmcmIGRhdGEpOwotICAgIFBh
c3NSZWZQdHI8Q0RBVEFTZWN0aW9uPiBjcmVhdGVDREFUQVNlY3Rpb24oY29uc3QgU3RyaW5nJiBk
YXRhLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24+IGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihjb25zdCBTdHJpbmcmIHRhcmdldCwgY29u
c3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxBdHRyPiBj
cmVhdGVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
UGFzc1JlZlB0cjxBdHRyPiBjcmVhdGVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFj
ZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiwgYm9vbCBz
aG91bGRJZ25vcmVOYW1lc3BhY2VDaGVja3MgPSBmYWxzZSk7Ci0gICAgUGFzc1JlZlB0cjxFbnRp
dHlSZWZlcmVuY2U+IGNyZWF0ZUVudGl0eVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPE5vZGU+IGltcG9ydE5vZGUoTm9kZSogaW1w
b3J0ZWROb2RlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gaW1wb3J0Tm9kZShpbXBvcnRl
ZE5vZGUsIHRydWUsIGVjKTsgfQotICAgIFBhc3NSZWZQdHI8Tm9kZT4gaW1wb3J0Tm9kZShOb2Rl
KiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudE5TKGNvbnN0IFN0cmluZyYg
bmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFt
ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFRleHQ+IGNyZWF0ZVRleHROb2RlKGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgUmVmUHRy
PENvbW1lbnQ+IGNyZWF0ZUNvbW1lbnQoY29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICBSZWZQdHI8
Q0RBVEFTZWN0aW9uPiBjcmVhdGVDREFUQVNlY3Rpb24oY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNl
cHRpb25Db2RlJik7CisgICAgUmVmUHRyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gY3JlYXRlUHJv
Y2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRh
dGEsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8QXR0cj4gY3JlYXRlQXR0cmlidXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxBdHRyPiBjcmVh
dGVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBx
dWFsaWZpZWROYW1lLCBFeGNlcHRpb25Db2RlJiwgYm9vbCBzaG91bGRJZ25vcmVOYW1lc3BhY2VD
aGVja3MgPSBmYWxzZSk7CisgICAgUmVmUHRyPEVudGl0eVJlZmVyZW5jZT4gY3JlYXRlRW50aXR5
UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0
cjxOb2RlPiBpbXBvcnROb2RlKE5vZGUqIGltcG9ydGVkTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMp
IHsgcmV0dXJuIGltcG9ydE5vZGUoaW1wb3J0ZWROb2RlLCB0cnVlLCBlYyk7IH0KKyAgICBSZWZQ
dHI8Tm9kZT4gaW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVlcCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVt
ZW50TlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVk
TmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxFbGVtZW50
PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBib29sIGNyZWF0ZWRCeVBhcnNl
cik7CiAKICAgICBib29sIGNzc1JlZ2lvbnNFbmFibGVkKCkgY29uc3Q7CiAgICAgYm9vbCBjc3ND
b21wb3NpdGluZ0VuYWJsZWQoKSBjb25zdDsKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAg
UGFzc1JlZlB0cjxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiB3ZWJraXRHZXROYW1lZEZsb3dzKCk7
CisgICAgUmVmUHRyPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IHdlYmtpdEdldE5hbWVkRmxvd3Mo
KTsKICNlbmRpZgogCiAgICAgTmFtZWRGbG93Q29sbGVjdGlvbiYgbmFtZWRGbG93cygpOwpAQCAt
NDQ2LDggKzQ0Niw4IEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50KGlu
dCB4LCBpbnQgeSkgeyByZXR1cm4gZWxlbWVudEZyb21Qb2ludChMYXlvdXRQb2ludCh4LCB5KSk7
IH0KICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGll
bnRQb2ludCk7CiAKLSAgICBQYXNzUmVmUHRyPFJhbmdlPiBjYXJldFJhbmdlRnJvbVBvaW50KGlu
dCB4LCBpbnQgeSk7Ci0gICAgUGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5nZUZyb21Qb2ludChj
b25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQpOworICAgIFJlZlB0cjxSYW5nZT4gY2FyZXRS
YW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkpOworICAgIFJlZlB0cjxSYW5nZT4gY2FyZXRSYW5n
ZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQpOwogCiAgICAgU3RyaW5n
IHJlYWR5U3RhdGUoKSBjb25zdDsKIApAQCAtNDk4LDIwICs0OTgsMjAgQEAgcHVibGljOgogICAg
IERPTVNlY3VyaXR5UG9saWN5JiBzZWN1cml0eVBvbGljeSgpOwogI2VuZGlmCiAKLSAgICBQYXNz
UmVmUHRyPE5vZGU+IGFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9u
Q29kZSYpOworICAgIFJlZlB0cjxOb2RlPiBhZG9wdE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3Vy
Y2UsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGlt
YWdlcygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGVtYmVkcygpOwotICAgIFBh
c3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHBsdWdpbnMoKTsgLy8gYW4gYWxpYXMgZm9yIGVtYmVk
cygpIHJlcXVpcmVkIGZvciB0aGUgSlMgRE9NIGJpbmRpbmdzLgotICAgIFBhc3NSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IGFwcGxldHMoKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBs
aW5rcygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGZvcm1zKCk7Ci0gICAgUGFz
c1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gYW5jaG9ycygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IHNjcmlwdHMoKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBhbGwo
KTsKKyAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGltYWdlcygpOworICAgIFJlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gZW1iZWRzKCk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBwbHVnaW5z
KCk7IC8vIGFuIGFsaWFzIGZvciBlbWJlZHMoKSByZXF1aXJlZCBmb3IgdGhlIEpTIERPTSBiaW5k
aW5ncy4KKyAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGFwcGxldHMoKTsKKyAgICBSZWZQdHI8
SFRNTENvbGxlY3Rpb24+IGxpbmtzKCk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBmb3Jt
cygpOworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gYW5jaG9ycygpOworICAgIFJlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gc2NyaXB0cygpOworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gYWxs
KCk7CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB3aW5kb3dOYW1lZEl0ZW1zKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4g
ZG9jdW1lbnROYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgUmVmUHRy
PEhUTUxDb2xsZWN0aW9uPiB3aW5kb3dOYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSk7CisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBkb2N1bWVudE5hbWVkSXRlbXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKTsKIAogICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9m
IERPTSkKICAgICBib29sIGlzU3ludGhlc2l6ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3ludGhl
c2l6ZWQ7IH0KQEAgLTU3OSwxNyArNTc5LDE3IEBAIHB1YmxpYzoKIAogICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJh
bmdlPiBjcmVhdGVSYW5nZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gY3Jl
YXRlUmFuZ2UoKTsKIAotICAgIFBhc3NSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBjcmVhdGVOb2RlSXRl
cmF0b3IoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFRvU2hvdywKKyAgICBSZWZQdHI8Tm9kZUl0
ZXJhdG9yPiBjcmVhdGVOb2RlSXRlcmF0b3IoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFRvU2hv
dywKICAgICAgICAgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiwgYm9vbCBleHBhbmRFbnRpdHlSZWZl
cmVuY2VzLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPFRyZWVXYWxrZXI+IGNy
ZWF0ZVRyZWVXYWxrZXIoTm9kZSogcm9vdCwgdW5zaWduZWQgd2hhdFRvU2hvdywKKyAgICBSZWZQ
dHI8VHJlZVdhbGtlcj4gY3JlYXRlVHJlZVdhbGtlcihOb2RlKiByb290LCB1bnNpZ25lZCB3aGF0
VG9TaG93LAogICAgICAgICBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+LCBib29sIGV4cGFuZEVudGl0
eVJlZmVyZW5jZXMsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIC8vIFNwZWNpYWwgc3VwcG9ydCBm
b3IgZWRpdGluZwotICAgIFBhc3NSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gY3JlYXRlQ1NT
U3R5bGVEZWNsYXJhdGlvbigpOwotICAgIFBhc3NSZWZQdHI8VGV4dD4gY3JlYXRlRWRpdGluZ1Rl
eHROb2RlKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBj
cmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CisgICAgUmVmUHRyPFRleHQ+IGNyZWF0ZUVkaXRp
bmdUZXh0Tm9kZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGU6
OkNoYW5nZSA9IFN0eWxlOjpOb0NoYW5nZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CkBAIC02ODcsNyArNjg3LDcgQEAgcHVibGljOgogCiAgICAgQ1NT
U3R5bGVTaGVldCYgZWxlbWVudFNoZWV0KCk7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxEb2N1
bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiAgICAgRG9jdW1lbnRQYXJzZXIqIHBhcnNlcigp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyLmdldCgpOyB9CiAgICAgU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyKiBzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSBjb25zdDsKICAgICAKQEAgLTgxOCw3
ICs4MTgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFdpbmRv
d0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiA9IDApOwog
ICAgIHZvaWQgZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQoKTsKIAotICAgIFBhc3NSZWZQdHI8RXZl
bnQ+IGNyZWF0ZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlLCBFeGNlcHRpb25Db2RlJik7
CisgICAgUmVmUHRyPEV2ZW50PiBjcmVhdGVFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSwg
RXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8ga2VlcCB0cmFjayBvZiB3aGF0IHR5cGVzIG9mIGV2
ZW50IGxpc3RlbmVycyBhcmUgcmVnaXN0ZXJlZCwgc28gd2UgZG9uJ3QKICAgICAvLyBkaXNwYXRj
aCBldmVudHMgdW5uZWNlc3NhcmlseQpAQCAtOTcyLDcgKzk3Miw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShYU0xUKQogICAgIHZvaWQgYXBwbHlYU0xUcmFuc2Zvcm0oUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKiBwaSk7Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVudD4gdHJhbnNmb3JtU291cmNlRG9j
dW1lbnQoKSB7IHJldHVybiBtX3RyYW5zZm9ybVNvdXJjZURvY3VtZW50OyB9CisgICAgUmVmUHRy
PERvY3VtZW50PiB0cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpIHsgcmV0dXJuIG1fdHJhbnNmb3Jt
U291cmNlRG9jdW1lbnQ7IH0KICAgICB2b2lkIHNldFRyYW5zZm9ybVNvdXJjZURvY3VtZW50KERv
Y3VtZW50KiBkb2MpIHsgbV90cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCA9IGRvYzsgfQogCiAgICAg
dm9pZCBzZXRUcmFuc2Zvcm1Tb3VyY2Uoc3RkOjp1bmlxdWVfcHRyPFRyYW5zZm9ybVNvdXJjZT4p
OwpAQCAtOTgzLDE2ICs5ODMsOSBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgZG9tVHJlZVZlcnNp
b24oKSBjb25zdCB7IHJldHVybiBtX2RvbVRyZWVWZXJzaW9uOyB9CiAKICAgICAvLyBYUGF0aEV2
YWx1YXRvciBtZXRob2RzCi0gICAgUGFzc1JlZlB0cjxYUGF0aEV4cHJlc3Npb24+IGNyZWF0ZUV4
cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9u
Q29kZSYgZWMpOwotICAgIFBhc3NSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiBjcmVhdGVOU1Jlc29s
dmVyKE5vZGUgKm5vZGVSZXNvbHZlcik7Ci0gICAgUGFzc1JlZlB0cjxYUGF0aFJlc3VsdD4gZXZh
bHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGNvbnRleHROb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBYUGF0aFJlc3VsdCogcmVzdWx0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICBSZWZQdHI8
WFBhdGhFeHByZXNzaW9uPiBjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgWFBhdGhOU1Jlc29sdmVyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxYUGF0aE5T
UmVzb2x2ZXI+IGNyZWF0ZU5TUmVzb2x2ZXIoTm9kZSogbm9kZVJlc29sdmVyKTsKKyAgICBSZWZQ
dHI8WFBhdGhSZXN1bHQ+IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgTm9kZSog
Y29udGV4dE5vZGUsIFhQYXRoTlNSZXNvbHZlciosIHVuc2lnbmVkIHNob3J0IHR5cGUsIFhQYXRo
UmVzdWx0KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgZW51bSBQZW5kaW5nU2hlZXRMYXlvdXQg
eyBOb0xheW91dFdpdGhQZW5kaW5nU2hlZXRzLCBEaWRMYXlvdXRXaXRoUGVuZGluZ1NoZWV0cywg
SWdub3JlTGF5b3V0V2l0aFBlbmRpbmdTaGVldHMgfTsKIApAQCAtMTA2OCw3ICsxMDYxLDcgQEAg
cHVibGljOgogICAgIFRleHRSZXNvdXJjZURlY29kZXIqIGRlY29kZXIoKSBjb25zdCB7IHJldHVy
biBtX2RlY29kZXIuZ2V0KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkaXNwbGF5
U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+KSBjb25zdDsKKyAgICBSZWZQdHI8U3RyaW5nSW1wbD4gZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KSBjb25zdDsKICAg
ICB2b2lkIGRpc3BsYXlCdWZmZXJNb2RpZmllZEJ5RW5jb2RpbmcoTENoYXIqIGJ1ZmZlciwgdW5z
aWduZWQgbGVuKSBjb25zdAogICAgIHsKICAgICAgICAgZGlzcGxheUJ1ZmZlck1vZGlmaWVkQnlF
bmNvZGluZ0ludGVybmFsKGJ1ZmZlciwgbGVuKTsKQEAgLTExNjgsNyArMTE2MSw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvRG9jdW1lbnRJT1MuaD4KICNlbGlmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgUGFzc1Jl
ZlB0cjxUb3VjaD4gY3JlYXRlVG91Y2goRE9NV2luZG93KiwgRXZlbnRUYXJnZXQqLCBpbnQgaWRl
bnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwg
aW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3Jj
ZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIFJlZlB0cjxUb3VjaD4gY3JlYXRlVG91Y2go
RE9NV2luZG93KiwgRXZlbnRUYXJnZXQqLCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQg
cGFnZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZ
LCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFURk9STShJ
T1MpCkBAIC0xMjY5LDcgKzEyNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTZWN1cml0eU9y
aWdpbiogdG9wT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICNpZiBFTkFCTEUoRk9O
VF9MT0FEX0VWRU5UUykKLSAgICBQYXNzUmVmUHRyPEZvbnRMb2FkZXI+IGZvbnRzKCk7CisgICAg
UmVmUHRyPEZvbnRMb2FkZXI+IGZvbnRzKCk7CiAjZW5kaWYKIAogICAgIHZvaWQgZW5zdXJlUGx1
Z0luc0luamVjdGVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYpOwpAQCAtMTI5Nyw3ICsxMjkwLDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1feG1sVmVyc2lv
biA9IFN0cmluZygpOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNsb25l
RG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxEb2N1
bWVudD4gY2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBOb2RlOwpAQCAtMTMyMSw3ICsxMzE0LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAgIHZp
cnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0
dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApIG92ZXJy
aWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXAp
IG92ZXJyaWRlIGZpbmFsOwogICAgIHZvaWQgY2xvbmVEYXRhRnJvbURvY3VtZW50KGNvbnN0IERv
Y3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IG92ZXJyaWRlIGZpbmFsIHsgcmVmKCk7IH0KQEAgLTEzNTIsNyArMTM0NSw3IEBAIHByaXZhdGU6
CiAKICAgICBOb2RlKiBub2RlRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2lu
dCwgTGF5b3V0UG9pbnQqIGxvY2FsUG9pbnQgPSBudWxscHRyKTsKIAotICAgIFBhc3NSZWZQdHI8
SFRNTENvbGxlY3Rpb24+IGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUpOwor
ICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihDb2xsZWN0
aW9uVHlwZSk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgdm9pZCBkaXNwYXRj
aEZ1bGxTY3JlZW5DaGFuZ2VPckVycm9yRXZlbnQoRGVxdWU8UmVmUHRyPE5vZGU+PiYsIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBib29sIHNob3VsZE5vdGlmeU1lZGlhRWxlbWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggNjdlY2IxNy4uOGFm
NDc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcApAQCAtMzYsMTIg
KzM2LDEyIEBAIERvY3VtZW50RnJhZ21lbnQ6OkRvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVjCiB7CiB9CiAKLVBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCkKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRG9jdW1lbnRGcmFn
bWVudChkb2N1bWVudCwgTm9kZTo6Q3JlYXRlRG9jdW1lbnRGcmFnbWVudCkpOwogfQogCi1QYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERvY3Vt
ZW50RnJhZ21lbnQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRG9jdW1lbnRGcmFnbWVudChkb3duY2FzdDxEb2N1bWVu
dD4oY29udGV4dCksIE5vZGU6OkNyZWF0ZURvY3VtZW50RnJhZ21lbnQpKTsKIH0KQEAgLTcxLDEy
ICs3MSwxMiBAQCBib29sIERvY3VtZW50RnJhZ21lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5
cGUgdHlwZSkgY29uc3QKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnRGcmFn
bWVudDo6Y2xvbmVOb2RlKGJvb2wgZGVlcCkKK1JlZlB0cjxOb2RlPiBEb2N1bWVudEZyYWdtZW50
OjpjbG9uZU5vZGUoYm9vbCBkZWVwKQogewogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBj
bG9uZSA9IGNyZWF0ZShkb2N1bWVudCgpKTsKICAgICBpZiAoZGVlcCkKICAgICAgICAgY2xvbmVD
aGlsZE5vZGVzKGNsb25lLmdldCgpKTsKLSAgICByZXR1cm4gY2xvbmUucmVsZWFzZSgpOworICAg
IHJldHVybiBjbG9uZTsKIH0KIAogdm9pZCBEb2N1bWVudEZyYWdtZW50OjpwYXJzZUhUTUwoY29u
c3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJDb250ZW50
UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuaAppbmRleCA1NDNiNTllLi4xMGZjYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZy
YWdtZW50LmgKQEAgLTMzLDggKzMzLDggQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IAogY2xhc3MgRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGUoRG9jdW1l
bnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAgICAgdm9pZCBwYXJzZUhUTUwo
Y29uc3QgU3RyaW5nJiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFBhcnNlckNvbnRlbnRQb2xp
Y3kgPSBBbGxvd1NjcmlwdGluZ0NvbnRlbnQpOwogICAgIGJvb2wgcGFyc2VYTUwoY29uc3QgU3Ry
aW5nJiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgPSBBbGxv
d1NjcmlwdGluZ0NvbnRlbnQpOwpAQCAtNDgsNyArNDgsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qg
b3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCmluZGV4IDBhNjg3
MTIuLjI5MjFmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIE5vZGU6Ok5vZGVUeXBlIERvY3VtZW50VHlwZTo6bm9kZVR5cGUoKSBjb25zdAogICAg
IHJldHVybiBET0NVTUVOVF9UWVBFX05PREU7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1l
bnRUeXBlOjpjbG9uZU5vZGUoYm9vbCAvKmRlZXAqLykKK1JlZlB0cjxOb2RlPiBEb2N1bWVudFR5
cGU6OmNsb25lTm9kZShib29sIC8qZGVlcCovKQogewogICAgIHJldHVybiBjcmVhdGUoZG9jdW1l
bnQoKSwgbV9uYW1lLCBtX3B1YmxpY0lkLCBtX3N5c3RlbUlkKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFR5cGUuaAppbmRleCBhOWI3YTZhLi5kOTIxNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
VHlwZS5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIE5hbWVkTm9kZU1hcDsKIAogY2xhc3MgRG9j
dW1lbnRUeXBlIGZpbmFsIDogcHVibGljIE5vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERvY3VtZW50VHlwZT4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHB1YmxpY0lkLCBjb25zdCBTdHJpbmcmIHN5c3RlbUlk
KQorICAgIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRUeXBlPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0
cmluZyYgc3lzdGVtSWQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3Vt
ZW50VHlwZShkb2N1bWVudCwgbmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKSk7CiAgICAgfQpAQCAt
NTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgVVJMIGJhc2VVUkkoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgb3ZlcnJpZGU7CiAKICAg
ICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBtX3B1YmxpY0lkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCmluZGV4IDE2NzVhMWQuLjIzNjQ3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEz
Nyw3ICsxMzcsNyBAQCBzdGF0aWMgQXR0ciogZmluZEF0dHJOb2RlSW5MaXN0KFZlY3RvcjxSZWZQ
dHI8QXR0cj4+JiBhdHRyTm9kZUxpc3QsIGNvbnN0IFF1YWxpZgogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8RWxlbWVudD4gRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQsIENyZWF0ZUVsZW1lbnQpKTsKIH0KQEAgLTI4NywxOSArMjg3LDE5IEBAIERFRklORV9WSVJU
VUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihFbGVtZW50LCBlcnJvcik7CiBERUZJTkVfVklS
VFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoRWxlbWVudCwgZm9jdXMpOwogREVGSU5FX1ZJ
UlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKEVsZW1lbnQsIGxvYWQpOwogCi1QYXNzUmVm
UHRyPE5vZGU+IEVsZW1lbnQ6OmNsb25lTm9kZShib29sIGRlZXApCitSZWZQdHI8Tm9kZT4gRWxl
bWVudDo6Y2xvbmVOb2RlKGJvb2wgZGVlcCkKIHsKICAgICByZXR1cm4gZGVlcCA/IGNsb25lRWxl
bWVudFdpdGhDaGlsZHJlbigpIDogY2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7CiB9CiAK
LVBhc3NSZWZQdHI8RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKCkK
K1JlZlB0cjxFbGVtZW50PiBFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4oKQogewog
ICAgIFJlZlB0cjxFbGVtZW50PiBjbG9uZSA9IGNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigp
OwogICAgIGNsb25lQ2hpbGROb2RlcyhjbG9uZS5nZXQoKSk7CiAgICAgcmV0dXJuIGNsb25lLnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBFbGVtZW50OjpjbG9uZUVsZW1lbnRX
aXRob3V0Q2hpbGRyZW4oKQorUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNsb25lRWxlbWVudFdp
dGhvdXRDaGlsZHJlbigpCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGNsb25lID0gY2xvbmVFbGVt
ZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpOwogICAgIC8vIFRoaXMgd2lsbCBjYXRj
aCBIVE1MIGVsZW1lbnRzIGluIHRoZSB3cm9uZyBuYW1lc3BhY2UgdGhhdCBhcmUgbm90IGNvcnJl
Y3RseSBjb3BpZWQuCkBAIC0zMTAsMTIgKzMxMCwxMiBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEVs
ZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpCiAgICAgcmV0dXJuIGNsb25lLnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBFbGVtZW50OjpjbG9uZUVsZW1lbnRX
aXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKK1JlZlB0cjxFbGVtZW50PiBFbGVtZW50Ojpj
bG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKIHsKICAgICByZXR1cm4g
ZG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50KHRhZ1FOYW1lKCksIGZhbHNlKTsKIH0KIAotUGFzc1Jl
ZlB0cjxBdHRyPiBFbGVtZW50OjpkZXRhY2hBdHRyaWJ1dGUodW5zaWduZWQgaW5kZXgpCitSZWZQ
dHI8QXR0cj4gRWxlbWVudDo6ZGV0YWNoQXR0cmlidXRlKHVuc2lnbmVkIGluZGV4KQogewogICAg
IEFTU0VSVChlbGVtZW50RGF0YSgpKTsKIApAQCAtODgxLDcgKzg4MSw3IEBAIEludFJlY3QgRWxl
bWVudDo6Ym91bmRzSW5Sb290Vmlld1NwYWNlKCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1Q
YXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBFbGVtZW50OjpnZXRDbGllbnRSZWN0cygpCitSZWZQ
dHI8Q2xpZW50UmVjdExpc3Q+IEVsZW1lbnQ6OmdldENsaWVudFJlY3RzKCkKIHsKICAgICBkb2N1
bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCkBAIC04OTgs
NyArODk4LDcgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gRWxlbWVudDo6Z2V0Q2xpZW50
UmVjdHMoKQogICAgIHJldHVybiBDbGllbnRSZWN0TGlzdDo6Y3JlYXRlKHF1YWRzKTsKIH0KIAot
UGFzc1JlZlB0cjxDbGllbnRSZWN0PiBFbGVtZW50OjpnZXRCb3VuZGluZ0NsaWVudFJlY3QoKQor
UmVmUHRyPENsaWVudFJlY3Q+IEVsZW1lbnQ6OmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpCiB7CiAg
ICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIApA
QCAtMTQ4Miw3ICsxNDgyLDcgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKICAg
ICBvbGRSb290LT5kaXN0cmlidXRvcigpLmludmFsaWRhdGVEaXN0cmlidXRpb24odGhpcyk7CiB9
CiAKLVBhc3NSZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVudDo6Y3JlYXRlU2hhZG93Um9vdChFeGNl
cHRpb25Db2RlJiBlYykKK1JlZlB0cjxTaGFkb3dSb290PiBFbGVtZW50OjpjcmVhdGVTaGFkb3dS
b290KEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChhbHdheXNDcmVhdGVVc2VyQWdlbnRT
aGFkb3dSb290KCkpCiAgICAgICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKQEAgLTE2
OTAsNyArMTY5MCw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8QXR0cj4+JiBFbGVtZW50OjphdHRy
Tm9kZUxpc3QoKQogICAgIHJldHVybiAqYXR0ck5vZGVMaXN0Rm9yRWxlbWVudCgqdGhpcyk7CiB9
CiAKLVBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZShBdHRyKiBhdHRy
Tm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8QXR0cj4gRWxlbWVudDo6c2V0QXR0cmli
dXRlTm9kZShBdHRyKiBhdHRyTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFh
dHRyTm9kZSkgewogICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwpAQCAtMTcyOCwxMiAr
MTcyOCwxMiBAQCBQYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGUoQXR0
ciogYXR0ck5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiBvbGRBdHRyTm9kZS5y
ZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6c2V0QXR0cmlidXRlTm9k
ZU5TKEF0dHIqIGF0dHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEF0dHI+IEVsZW1lbnQ6
OnNldEF0dHJpYnV0ZU5vZGVOUyhBdHRyKiBhdHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICByZXR1cm4gc2V0QXR0cmlidXRlTm9kZShhdHRyLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8QXR0
cj4gRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyKiBhdHRyLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1JlZlB0cjxBdHRyPiBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOb2RlKEF0dHIqIGF0
dHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghYXR0cikgewogICAgICAgICBlYyA9
IFRZUEVfTUlTTUFUQ0hfRVJSOwpAQCAtMTg0MCw3ICsxODQwLDcgQEAgYm9vbCBFbGVtZW50Ojpy
ZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3Qg
QXRvbWljU3QKICAgICByZXR1cm4gcmVtb3ZlQXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0
b20sIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSk7CiB9CiAKLVBhc3NSZWZQdHI8QXR0cj4gRWxl
bWVudDo6Z2V0QXR0cmlidXRlTm9kZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKK1Jl
ZlB0cjxBdHRyPiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxOYW1lKQogewogICAgIGlmICghZWxlbWVudERhdGEoKSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xODUxLDcgKzE4NTEsNyBAQCBQYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmdldEF0dHJp
YnV0ZU5vZGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCiAgICAgcmV0dXJuIGVuc3Vy
ZUF0dHIoYXR0cmlidXRlLT5uYW1lKCkpOwogfQogCi1QYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6
OmdldEF0dHJpYnV0ZU5vZGVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCitSZWZQdHI8QXR0cj4gRWxlbWVudDo6Z2V0QXR0
cmlidXRlTm9kZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAgICBpZiAoIWVsZW1lbnREYXRhKCkpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMjc2Miw3ICsyNzYyLDcgQEAgdm9pZCBFbGVtZW50OjpkaWRSZW1vdmVB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJgog
ICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gRWxlbWVudDo6ZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlv
blR5cGUgdHlwZSkKK1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRWxlbWVudDo6ZW5zdXJlQ2FjaGVk
SFRNTENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUgdHlwZSkKIHsKICAgICBpZiAoSFRNTENvbGxl
Y3Rpb24qIGNvbGxlY3Rpb24gPSBjYWNoZWRIVE1MQ29sbGVjdGlvbih0eXBlKSkKICAgICAgICAg
cmV0dXJuIGNvbGxlY3Rpb247CkBAIC0yNzk1LDE0ICsyNzk1LDE0IEBAIHZvaWQgRWxlbWVudDo6
c2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGVuc3Vy
ZUVsZW1lbnRSYXJlRGF0YSgpLnNldFNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoc2l6ZSk7CiB9CiAK
LVBhc3NSZWZQdHI8QXR0cj4gRWxlbWVudDo6YXR0cklmRXhpc3RzKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUpCitSZWZQdHI8QXR0cj4gRWxlbWVudDo6YXR0cklmRXhpc3RzKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUpCiB7CiAgICAgaWYgKGF1dG8qIGF0dHJOb2RlTGlzdCA9IGF0dHJOb2Rl
TGlzdEZvckVsZW1lbnQoKnRoaXMpKQogICAgICAgICByZXR1cm4gZmluZEF0dHJOb2RlSW5MaXN0
KCphdHRyTm9kZUxpc3QsIG5hbWUpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVm
UHRyPEF0dHI+IEVsZW1lbnQ6OmVuc3VyZUF0dHIoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkK
K1JlZlB0cjxBdHRyPiBFbGVtZW50OjplbnN1cmVBdHRyKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpCiB7CiAgICAgYXV0byYgYXR0ck5vZGVMaXN0ID0gZW5zdXJlQXR0ck5vZGVMaXN0Rm9yRWxl
bWVudCgqdGhpcyk7CiAgICAgUmVmUHRyPEF0dHI+IGF0dHJOb2RlID0gZmluZEF0dHJOb2RlSW5M
aXN0KGF0dHJOb2RlTGlzdCwgbmFtZSk7CkBAIC0yOTIxLDEwICsyOTIxLDEwIEBAIHZvaWQgRWxl
bWVudDo6ZGlkRGV0YWNoUmVuZGVyZXJzKCkKICAgICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNv
bHZlQ2FsbGJhY2tzKCkpOwogfQogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBFbGVtZW50Ojpj
dXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJikKK1JlZlB0cjxSZW5kZXJTdHlsZT4g
RWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYpCiB7CiAgICAgQVNT
RVJUKGhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKTsKLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBFbGVtZW50OjpjbG9uZUF0dHJpYnV0ZXNGcm9t
RWxlbWVudChjb25zdCBFbGVtZW50JiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDk1MWY0
NjYuLjAzM2MyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNTksNyArNTksNyBAQCBlbnVtIFNw
ZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSB7CiAKIGNsYXNzIEVsZW1lbnQgOiBwdWJsaWMgQ29udGFp
bmVyTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8RWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1
YWwgfkVsZW1lbnQoKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJv
cnQpOwpAQCAtMjIwLDggKzIyMCw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIElu
dFJlY3QgYm91bmRzSW5Sb290Vmlld1NwYWNlKCk7CiAKLSAgICBQYXNzUmVmUHRyPENsaWVudFJl
Y3RMaXN0PiBnZXRDbGllbnRSZWN0cygpOwotICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgUmVmUHRyPENsaWVudFJlY3RMaXN0PiBnZXRDbGll
bnRSZWN0cygpOworICAgIFJlZlB0cjxDbGllbnRSZWN0PiBnZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKICAgICAKICAgICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBib3VuZGluZyBib3ggdHJhbnNs
YXRlZCBpbnRvIGNsaWVudCBjb29yZGluYXRlcy4KICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0
IGNsaWVudFJlY3QoKSBjb25zdDsKQEAgLTIzMSwxNiArMjMxLDE2IEBAIHB1YmxpYzoKICAgICBi
b29sIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwogICAgIGJvb2wg
cmVtb3ZlQXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKTsKIAotICAgIFBhc3NSZWZQdHI8QXR0cj4gZGV0YWNo
QXR0cmlidXRlKHVuc2lnbmVkIGluZGV4KTsKKyAgICBSZWZQdHI8QXR0cj4gZGV0YWNoQXR0cmli
dXRlKHVuc2lnbmVkIGluZGV4KTsKIAotICAgIFBhc3NSZWZQdHI8QXR0cj4gZ2V0QXR0cmlidXRl
Tm9kZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIFBhc3NSZWZQdHI8QXR0cj4gZ2V0
QXR0cmlidXRlTm9kZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsTmFtZSk7Ci0gICAgUGFzc1JlZlB0cjxBdHRyPiBzZXRBdHRyaWJ1
dGVOb2RlKEF0dHIqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxBdHRyPiBzZXRB
dHRyaWJ1dGVOb2RlTlMoQXR0ciosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEF0
dHI+IHJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0ciosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQ
dHI8QXR0cj4gZ2V0QXR0cmlidXRlTm9kZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAg
IFJlZlB0cjxBdHRyPiBnZXRBdHRyaWJ1dGVOb2RlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKTsKKyAgICBSZWZQdHI8QXR0
cj4gc2V0QXR0cmlidXRlTm9kZShBdHRyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxB
dHRyPiBzZXRBdHRyaWJ1dGVOb2RlTlMoQXR0ciosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQ
dHI8QXR0cj4gcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRyKiwgRXhjZXB0aW9uQ29kZSYpOwogCi0g
ICAgUGFzc1JlZlB0cjxBdHRyPiBhdHRySWZFeGlzdHMoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIFBhc3NSZWZQdHI8QXR0cj4gZW5zdXJlQXR0cihjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgUmVmUHRyPEF0dHI+IGF0dHJJZkV4aXN0cyhjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
UmVmUHRyPEF0dHI+IGVuc3VyZUF0dHIoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxBdHRyPj4mIGF0dHJOb2RlTGlzdCgpOwogCkBAIC0yNjcsOCArMjY3
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aENoaWxkcmVu
KCk7Ci0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4o
KTsKKyAgICBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKCk7CisgICAg
UmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOwogCiAgICAgdm9p
ZCBub3JtYWxpemVBdHRyaWJ1dGVzKCk7CiAgICAgU3RyaW5nIG5vZGVOYW1lUHJlc2VydmluZ0Nh
c2UoKSBjb25zdDsKQEAgLTMxNSw3ICszMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBQ
YXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IGNyZWF0ZVNoYWRvd1Jvb3QoRXhjZXB0aW9uQ29kZSYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFkb3dSb290PiBjcmVhdGVTaGFkb3dSb290KEV4
Y2VwdGlvbkNvZGUmKTsKIAogICAgIFNoYWRvd1Jvb3QqIHVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBj
b25zdDsKICAgICBTaGFkb3dSb290JiBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CkBAIC01
NDAsNyArNTQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJl
cnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaFJlbmRlcmVycygpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWREZXRhY2hSZW5kZXJlcnMoKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxl
KTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJl
cihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpOwogCiAgICAgdm9pZCBzZXRCZWZvcmVQc2V1ZG9F
bGVtZW50KFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4pOwogICAgIHZvaWQgc2V0QWZ0ZXJQc2V1
ZG9FbGVtZW50KFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4pOwpAQCAtNTY0LDcgKzU2NCw3IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5SWZOZWVkZWQoKTsg
ICAgCiAgICAgdm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0bHkoc2hvcnQpOwogCi0gICAgUGFzc1Jl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlv
blR5cGUpOworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZW5zdXJlQ2FjaGVkSFRNTENvbGxl
Y3Rpb24oQ29sbGVjdGlvblR5cGUpOwogICAgIEhUTUxDb2xsZWN0aW9uKiBjYWNoZWRIVE1MQ29s
bGVjdGlvbihDb2xsZWN0aW9uVHlwZSk7CiAKICAgICAvLyBjbGFzc0F0dHJpYnV0ZUNoYW5nZWQo
KSBleGlzdHMgdG8gc2hhcmUgY29kZSBiZXR3ZWVuCkBAIC02MjUsOCArNjI1LDggQEAgcHJpdmF0
ZToKIAogICAgIC8vIGNsb25lTm9kZSBpcyBwcml2YXRlIHNvIHRoYXQgbm9uLXZpcnR1YWwgY2xv
bmVFbGVtZW50V2l0aENoaWxkcmVuIGFuZCBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4KICAg
ICAvLyBhcmUgdXNlZCBpbnN0ZWFkLgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9u
ZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVu
dD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpOworICAgIHZpcnR1
YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRy
ZW4oKTsKIAogICAgIHZvaWQgYWRkU2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+KTsK
ICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbnRpdHlSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJlZmVy
ZW5jZS5jcHAKaW5kZXggODJjY2I2ZS4uZTdiMmY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VudGl0eVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VudGl0
eVJlZmVyZW5jZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgaW5saW5lIEVudGl0eVJlZmVyZW5jZTo6
RW50aXR5UmVmZXJlbmNlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBlbnRpdHkK
IHsKIH0KIAotUGFzc1JlZlB0cjxFbnRpdHlSZWZlcmVuY2U+IEVudGl0eVJlZmVyZW5jZTo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBlbnRpdHlOYW1lKQorUmVmUHRy
PEVudGl0eVJlZmVyZW5jZT4gRW50aXR5UmVmZXJlbmNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIGVudGl0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBFbnRpdHlSZWZlcmVuY2UoZG9jdW1lbnQsIGVudGl0eU5hbWUpKTsKIH0KQEAgLTQ2LDcgKzQ2
LDcgQEAgTm9kZTo6Tm9kZVR5cGUgRW50aXR5UmVmZXJlbmNlOjpub2RlVHlwZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIEVOVElUWV9SRUZFUkVOQ0VfTk9ERTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBF
bnRpdHlSZWZlcmVuY2U6OmNsb25lTm9kZShib29sKQorUmVmUHRyPE5vZGU+IEVudGl0eVJlZmVy
ZW5jZTo6Y2xvbmVOb2RlKGJvb2wpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBt
X2VudGl0eU5hbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJl
ZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5oCmluZGV4IDRh
NjRhMDkuLjYxNjRiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZl
cmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmgKQEAgLTI4
LDE0ICsyOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVudGl0eVJlZmVyZW5j
ZSBmaW5hbCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxFbnRpdHlSZWZlcmVuY2U+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYg
ZW50aXR5TmFtZSk7CisgICAgc3RhdGljIFJlZlB0cjxFbnRpdHlSZWZlcmVuY2U+IGNyZWF0ZShE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgZW50aXR5TmFtZSk7CiAKIHByaXZhdGU6CiAgICAgRW50
aXR5UmVmZXJlbmNlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBlbnRpdHlOYW1lKTsKIAogICAg
IHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBO
b2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKIAogICAgIFN0cmluZyBtX2Vu
dGl0eU5hbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGNhYzdlYTEuLjdiMmUxYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIE5vZGU6OnNldE5vZGVWYWx1ZShj
b25zdCBTdHJpbmcmIC8qbm9kZVZhbHVlKi8sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIEJ5
IGRlZmF1bHQsIHNldHRpbmcgbm9kZVZhbHVlIGhhcyBubyBlZmZlY3QuCiB9CiAKLVBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IE5vZGU6OmNoaWxkTm9kZXMoKQorUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpj
aGlsZE5vZGVzKCkKIHsKICAgICBpZiAoaXM8Q29udGFpbmVyTm9kZT4oKnRoaXMpKQogICAgICAg
ICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5lbnN1cmVDaGlsZE5v
ZGVMaXN0KGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCp0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBm
ZGIxZTQ3Li5lOGY1MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBwcmV2aW91c1NpYmxpbmdNZW1vcnlPZmZzZXQoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoTm9kZSwgbV9wcmV2aW91cyk7IH0KICAgICBOb2RlKiBuZXh0
U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qg
bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTm9kZSwg
bV9uZXh0KTsgfQotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGNoaWxkTm9kZXMoKTsKKyAgICBS
ZWZQdHI8Tm9kZUxpc3Q+IGNoaWxkTm9kZXMoKTsKICAgICBOb2RlKiBmaXJzdENoaWxkKCkgY29u
c3Q7CiAgICAgTm9kZSogbGFzdENoaWxkKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdHRyaWJ1dGVz
KCkgY29uc3Q7CkBAIC0yMDEsNyArMjAxLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmUoRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgaGFzQ2hpbGROb2Rlcygp
IGNvbnN0IHsgcmV0dXJuIGZpcnN0Q2hpbGQoKTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxO
b2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Tm9kZT4g
Y2xvbmVOb2RlKGJvb2wgZGVlcCkgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbE5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXNwYWNlVVJJKCkgY29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZp
eCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNw
cAppbmRleCAyMjA2NTJhLi5iNGRmZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmNwcApAQCAtNTIsNyArNTIsNyBAQCBpbmxpbmUgUHJvY2Vzc2luZ0lu
c3RydWN0aW9uOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBTdAogewogfQogCi1QYXNzUmVmUHRyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gUHJvY2Vzc2lu
Z0luc3RydWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRh
cmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQorUmVmUHRyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4g
UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUHJvY2Vzc2luZ0luc3RydWN0aW9uKGRvY3VtZW50LCB0YXJnZXQsIGRhdGEpKTsKIH0K
QEAgLTc5LDcgKzc5LDcgQEAgTm9kZTo6Tm9kZVR5cGUgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpu
b2RlVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTsK
IH0KIAotUGFzc1JlZlB0cjxOb2RlPiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNsb25lTm9kZShi
b29sIC8qZGVlcCovKQorUmVmUHRyPE5vZGU+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2xvbmVO
b2RlKGJvb2wgLypkZWVwKi8pCiB7CiAgICAgLy8gRklYTUU6IElzIGl0IGEgcHJvYmxlbSB0aGF0
IHRoaXMgZG9lcyBub3QgY29weSBtX2xvY2FsSHJlZj8KICAgICAvLyBXaGF0IGFib3V0IG90aGVy
IGRhdGEgbWVtYmVycz8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aAppbmRleCAzZDcyM2FhLi4wZTRlOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiAK
IGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDaGFyYWN0ZXJEYXRh
LCBwcml2YXRlIENhY2hlZFN0eWxlU2hlZXRDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiwgY29uc3Qg
U3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgc3RhdGljIFJlZlB0cjxQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGFy
Z2V0LCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZpcnR1YWwgflByb2Nlc3NpbmdJbnN0cnVj
dGlvbigpOwogCiAgICAgY29uc3QgU3RyaW5nJiB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3Rh
cmdldDsgfQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBTdHJpbmcg
bm9kZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9k
ZShib29sIGRlZXApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9k
ZShib29sIGRlZXApIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCAzY2Q0ZjA4Li43YzJiY2YyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIFBzZXVkb0VsZW1lbnQ6
On5Qc2V1ZG9FbGVtZW50KCkKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBzZXVkb0Vs
ZW1lbnREZXN0cm95ZWQoZG9jdW1lbnQoKS5wYWdlKCksIHRoaXMpOwogfQogCi1QYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBQc2V1ZG9FbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSkKK1JlZlB0cjxSZW5kZXJTdHlsZT4gUHNldWRvRWxlbWVudDo6
Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCiB7CiAgICAg
cmV0dXJuIG1faG9zdEVsZW1lbnQtPnJlbmRlcmVyKCktPmdldENhY2hlZFBzZXVkb1N0eWxlKG1f
cHNldWRvSWQsICZwYXJlbnRTdHlsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUHNldWRvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaApp
bmRleCA0YmU1Yzk2Li41NDAzMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNl
dWRvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGhvc3RFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9ob3N0RWxlbWVudDsgfQogICAgIHZvaWQgY2xlYXJIb3N0RWxlbWVudCgpIHsg
bV9ob3N0RWxlbWVudCA9IG51bGxwdHI7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZv
clJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5oCmluZGV4IGFkOGEzZWQuLmFhMTFlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAogICAgIC8vIFNoYWRvd1Jv
b3RzIHNob3VsZCBuZXZlciBiZSBjbG9uZWQuCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+
IGNsb25lTm9kZShib29sKSBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQ
dHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZG4ndCBoYXBwZW4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODgzNAogICAgIGJvb2wgaXNPcnBoYW4oKSBjb25zdCB7IHJldHVybiAh
aG9zdEVsZW1lbnQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RlbXBsYXRl
Q29udGVudERvY3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZW1wbGF0ZUNv
bnRlbnREb2N1bWVudEZyYWdtZW50LmgKaW5kZXggZTc0YjQzYS4uZjhiNjE5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5o
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGVtcGxhdGVD
b250ZW50RG9jdW1lbnRGcmFnbWVudCBmaW5hbCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBFbGVtZW50KiBob3N0KQor
ICAgIHN0YXRpYyBSZWZQdHI8VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRWxlbWVudCogaG9zdCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudChkb2N1
bWVudCwgaG9zdCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCBkNTRiZGFlLi5iOWI4YzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHQuY3BwCkBAIC0zOCwxNyArMzgsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzUmVmUHRyPFRleHQ+IFRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZlB0cjxUZXh0PiBUZXh0OjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBUZXh0KGRvY3VtZW50LCBkYXRhLCBDcmVhdGVUZXh0KSk7CiB9CiAKLVBhc3NSZWZQdHI8VGV4
dD4gVGV4dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgZGF0YSkKK1JlZlB0cjxUZXh0PiBUZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVGV4dChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIGRhdGEsIENyZWF0ZVRleHQp
KTsKIH0KIAotUGFzc1JlZlB0cjxUZXh0PiBUZXh0OjpjcmVhdGVFZGl0aW5nVGV4dChEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKK1JlZlB0cjxUZXh0PiBUZXh0OjpjcmVh
dGVFZGl0aW5nVGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHQoZG9jdW1lbnQsIGRhdGEsIENyZWF0ZUVkaXRp
bmdUZXh0KSk7CiB9CkBAIC01OCw3ICs1OCw3IEBAIFRleHQ6On5UZXh0KCkKICAgICBBU1NFUlQo
IXJlbmRlcmVyKCkpOwogfQogCi1QYXNzUmVmUHRyPFRleHQ+IFRleHQ6OnNwbGl0VGV4dCh1bnNp
Z25lZCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFRleHQ+IFRleHQ6OnNwbGl0
VGV4dCh1bnNpZ25lZCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsK
IApAQCAtMTI0LDcgKzEyNCw3IEBAIFN0cmluZyBUZXh0Ojp3aG9sZVRleHQoKSBjb25zdAogICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxUZXh0PiBUZXh0Ojpy
ZXBsYWNlV2hvbGVUZXh0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCwgRXhjZXB0aW9uQ29kZSYpCitS
ZWZQdHI8VGV4dD4gVGV4dDo6cmVwbGFjZVdob2xlVGV4dChjb25zdCBTdHJpbmcmIG5ld1RleHQs
IEV4Y2VwdGlvbkNvZGUmKQogewogICAgIC8vIFJlbW92ZSBhbGwgYWRqYWNlbnQgdGV4dCBub2Rl
cywgYW5kIHJlcGxhY2UgdGhlIGNvbnRlbnRzIG9mIHRoaXMgb25lLgogCkBAIC0xNjksMTIgKzE2
OSwxMSBAQCBOb2RlOjpOb2RlVHlwZSBUZXh0Ojpub2RlVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJu
IFRFWFRfTk9ERTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBUZXh0OjpjbG9uZU5vZGUoYm9vbCAv
KmRlZXAqLykKK1JlZlB0cjxOb2RlPiBUZXh0OjpjbG9uZU5vZGUoYm9vbCAvKmRlZXAqLykKIHsK
ICAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50KCksIGRhdGEoKSk7CiB9CiAKLQogc3RhdGljIGJv
b2wgaXNTVkdTaGFkb3dUZXh0KFRleHQqIHRleHQpCiB7CiAgICAgTm9kZSogcGFyZW50Tm9kZSA9
IHRleHQtPnBhcmVudE5vZGUoKTsKQEAgLTIwNCwxMiArMjAzLDEyIEBAIGJvb2wgVGV4dDo6Y2hp
bGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBh
c3NSZWZQdHI8VGV4dD4gVGV4dDo6dmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEpCitS
ZWZQdHI8VGV4dD4gVGV4dDo6dmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBkYXRhKTsKIH0KIAotUGFzc1JlZlB0cjxUZXh0
PiBUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIGRhdGEsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGhMaW1pdCkKK1JlZlB0
cjxUZXh0PiBUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIGRhdGEsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGhMaW1pdCkK
IHsKICAgICB1bnNpZ25lZCBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGgoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgK
aW5kZXggNjBkZWVmOS4uZjY3OTNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Rl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCkBAIC0zNSwxOSArMzUsMTkgQEAg
Y2xhc3MgVGV4dCA6IHB1YmxpYyBDaGFyYWN0ZXJEYXRhIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgZGVmYXVsdExlbmd0aExpbWl0ID0gMSA8PCAxNjsKIAotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRleHQ+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYpOwotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFRleHQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dD4gY3JlYXRlV2l0aExl
bmd0aExpbWl0KERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgcG9zaXRpb25JblN0
cmluZywgdW5zaWduZWQgbGVuZ3RoTGltaXQgPSBkZWZhdWx0TGVuZ3RoTGltaXQpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFRleHQ+IGNyZWF0ZUVkaXRpbmdUZXh0KERvY3VtZW50JiwgY29uc3Qg
U3RyaW5nJik7CisgICAgc3RhdGljIFJlZlB0cjxUZXh0PiBjcmVhdGUoRG9jdW1lbnQmLCBjb25z
dCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFRleHQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZlB0cjxUZXh0PiBjcmVh
dGVXaXRoTGVuZ3RoTGltaXQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3Np
dGlvbkluU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGhMaW1pdCA9IGRlZmF1bHRMZW5ndGhMaW1pdCk7
CisgICAgc3RhdGljIFJlZlB0cjxUZXh0PiBjcmVhdGVFZGl0aW5nVGV4dChEb2N1bWVudCYsIGNv
bnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCB+VGV4dCgpOwogCi0gICAgUGFzc1JlZlB0cjxU
ZXh0PiBzcGxpdFRleHQodW5zaWduZWQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVm
UHRyPFRleHQ+IHNwbGl0VGV4dCh1bnNpZ25lZCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKIAog
ICAgIC8vIERPTSBMZXZlbCAzOiBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1Db3Jl
L2NvcmUuaHRtbCNJRC0xMzEyMjk1NzcyCiAKICAgICBTdHJpbmcgd2hvbGVUZXh0KCkgY29uc3Q7
Ci0gICAgUGFzc1JlZlB0cjxUZXh0PiByZXBsYWNlV2hvbGVUZXh0KGNvbnN0IFN0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8VGV4dD4gcmVwbGFjZVdob2xlVGV4dChjb25zdCBT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgCiAgICAgUmVuZGVyUHRyPFJlbmRlclRleHQ+
IGNyZWF0ZVRleHRSZW5kZXJlcihjb25zdCBSZW5kZXJTdHlsZSYpOwogICAgIApAQCAtNjQsMTAg
KzY0LDEwIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5h
bWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29s
IGRlZXApIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29s
IGRlZXApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVU
eXBlKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0PiB2aXJ0
dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgUmVmUHRyPFRleHQ+IHZpcnR1
YWxDcmVhdGUoY29uc3QgU3RyaW5nJik7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2
b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAKaW5kZXggNWMxYmY1MC4uMTExNzg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTExMiwxMiArMTEyLDEyIEBAIGJvb2wgaXNFbXB0eUZv
bnRUYWcoY29uc3QgRWxlbWVudCogZWxlbWVudCwgU2hvdWxkU3R5bGVBdHRyaWJ1dGVCZUVtcHR5
IHNob3VsZFN0CiAgICAgcmV0dXJuIGhhc05vQXR0cmlidXRlT3JPbmx5U3R5bGVBdHRyaWJ1dGUo
ZG93bmNhc3Q8SFRNTEZvbnRFbGVtZW50PihlbGVtZW50KSwgc2hvdWxkU3R5bGVBdHRyaWJ1dGVC
ZUVtcHR5KTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRm9udEVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50KQorc3RhdGljIFJlZlB0cjxFbGVtZW50PiBjcmVhdGVGb250
RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVt
ZW50KGRvY3VtZW50LCBmb250VGFnKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3Jl
YXRlU3R5bGVTcGFuRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTEVsZW1l
bnQ+IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJl
dHVybiBjcmVhdGVIVE1MRWxlbWVudChkb2N1bWVudCwgc3BhblRhZyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKaW5kZXggMjI1YjBkMi4uMTBmNjE1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaApAQCAtMTM2LDcg
KzEzNiw3IEBAIGVudW0gU2hvdWxkU3R5bGVBdHRyaWJ1dGVCZUVtcHR5IHsgQWxsb3dOb25FbXB0
eVN0eWxlQXR0cmlidXRlLCBTdHlsZUF0dHJpYnV0ZVNoCiBib29sIGlzRW1wdHlGb250VGFnKGNv
bnN0IEVsZW1lbnQqLCBTaG91bGRTdHlsZUF0dHJpYnV0ZUJlRW1wdHkgPSBTdHlsZUF0dHJpYnV0
ZVNob3VsZEJlRW1wdHkpOwogYm9vbCBpc0xlZ2FjeUFwcGxlU3R5bGVTcGFuKGNvbnN0IE5vZGUq
KTsKIGJvb2wgaXNTdHlsZVNwYW5PclNwYW5XaXRoT25seVN0eWxlQXR0cmlidXRlKGNvbnN0IEVs
ZW1lbnQqKTsKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQo
RG9jdW1lbnQmKTsKK1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlU3R5bGVTcGFuRWxlbWVudChE
b2N1bWVudCYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKaW5kZXggNThlNWM3MS4uNjE2MjZjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKQEAgLTQ3LDcg
KzQ3LDcgQEAgc3RhdGljIE5vZGUqIGVuY2xvc2luZ0xpc3RDaGlsZChOb2RlKiBub2RlLCBOb2Rl
KiBsaXN0Tm9kZSkKICAgICByZXR1cm4gbGlzdENoaWxkOwogfQogCi1QYXNzUmVmUHRyPEhUTUxF
bGVtZW50PiBJbnNlcnRMaXN0Q29tbWFuZDo6aW5zZXJ0TGlzdChEb2N1bWVudCYgZG9jdW1lbnQs
IFR5cGUgdHlwZSkKK1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlzdENvbW1hbmQ6Omluc2Vy
dExpc3QoRG9jdW1lbnQmIGRvY3VtZW50LCBUeXBlIHR5cGUpCiB7CiAgICAgUmVmUHRyPEluc2Vy
dExpc3RDb21tYW5kPiBpbnNlcnRDb21tYW5kID0gY3JlYXRlKGRvY3VtZW50LCB0eXBlKTsKICAg
ICBpbnNlcnRDb21tYW5kLT5hcHBseSgpOwpAQCAtNjQsNyArNjQsNyBAQCBIVE1MRWxlbWVudCog
SW5zZXJ0TGlzdENvbW1hbmQ6OmZpeE9ycGhhbmVkTGlzdENoaWxkKE5vZGUqIG5vZGUpCiAgICAg
cmV0dXJuIGxpc3RFbGVtZW50LmdldCgpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBJ
bnNlcnRMaXN0Q29tbWFuZDo6bWVyZ2VXaXRoTmVpZ2hib3JpbmdMaXN0cyhQYXNzUmVmUHRyPEhU
TUxFbGVtZW50PiBwYXNzZWRMaXN0KQorUmVmUHRyPEhUTUxFbGVtZW50PiBJbnNlcnRMaXN0Q29t
bWFuZDo6bWVyZ2VXaXRoTmVpZ2hib3JpbmdMaXN0cyhQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBw
YXNzZWRMaXN0KQogewogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbGlzdCA9IHBhc3NlZExpc3Q7
CiAgICAgRWxlbWVudCogcHJldmlvdXNMaXN0ID0gbGlzdC0+cHJldmlvdXNFbGVtZW50U2libGlu
ZygpOwpAQCAtNzUsMTQgKzc1LDE0IEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExp
c3RDb21tYW5kOjptZXJnZVdpdGhOZWlnaGJvcmluZ0xpc3RzKFBhc3NSZWZQdHI8CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIEVsZW1lbnQqIHNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2Fs
OjpuZXh0U2libGluZyhsaXN0LmdldCgpKTsKICAgICBpZiAoIWlzPEhUTUxFbGVtZW50PihzaWJs
aW5nKSkKLSAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gbGlz
dDsKIAogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbmV4dExpc3QgPSBkb3duY2FzdDxIVE1MRWxl
bWVudD4oc2libGluZyk7CiAgICAgaWYgKGNhbk1lcmdlTGlzdHMobGlzdC5nZXQoKSwgbmV4dExp
c3QuZ2V0KCkpKSB7CiAgICAgICAgIG1lcmdlSWRlbnRpY2FsRWxlbWVudHMobGlzdCwgbmV4dExp
c3QpOwotICAgICAgICByZXR1cm4gbmV4dExpc3QucmVsZWFzZSgpOworICAgICAgICByZXR1cm4g
bmV4dExpc3Q7CiAgICAgfQotICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
bGlzdDsKIH0KIAogYm9vbCBJbnNlcnRMaXN0Q29tbWFuZDo6c2VsZWN0aW9uSGFzTGlzdE9mVHlw
ZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGxpc3RUYWcpCkBAIC0zMzEsNyArMzMxLDcgQEAgc3RhdGljIEVsZW1lbnQqIGFkamFjZW50RW5j
bG9zaW5nTGlzdChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvcywgY29uc3QgVmlzaWJsZVAKICAg
ICByZXR1cm4gbGlzdE5vZGU7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExp
c3RDb21tYW5kOjpsaXN0aWZ5UGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgb3JpZ2lu
YWxTdGFydCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGlzdFRhZykKK1JlZlB0cjxIVE1MRWxlbWVu
dD4gSW5zZXJ0TGlzdENvbW1hbmQ6Omxpc3RpZnlQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBvcmlnaW5hbFN0YXJ0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBsaXN0VGFnKQogewogICAg
IFZpc2libGVQb3NpdGlvbiBzdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgob3JpZ2luYWxTdGFydCwg
Q2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkpOwogICAgIFZpc2libGVQb3NpdGlvbiBlbmQgPSBl
bmRPZlBhcmFncmFwaChzdGFydCwgQ2FuU2tpcE92ZXJFZGl0aW5nQm91bmRhcnkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5oCmluZGV4IDlhNDY1OWIuLjZiMGZj
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmgKQEAgLTM3
LDEyICszNywxMiBAQCBjbGFzcyBJbnNlcnRMaXN0Q29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVF
ZGl0Q29tbWFuZCB7CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsgT3JkZXJlZExpc3QsIFVub3Jk
ZXJlZExpc3QgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc2VydExpc3RDb21tYW5kPiBj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUeXBlIGxpc3RUeXBlKQorICAgIHN0YXRpYyBSZWZQ
dHI8SW5zZXJ0TGlzdENvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFR5cGUgbGlz
dFR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc2VydExpc3RDb21t
YW5kKGRvY3VtZW50LCBsaXN0VHlwZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhUTUxFbGVtZW50PiBpbnNlcnRMaXN0KERvY3VtZW50JiwgVHlwZSk7CisgICAgc3RhdGljIFJl
ZlB0cjxIVE1MRWxlbWVudD4gaW5zZXJ0TGlzdChEb2N1bWVudCYsIFR5cGUpOwogICAgIAogICAg
IHZpcnR1YWwgYm9vbCBwcmVzZXJ2ZXNUeXBpbmdTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KIApAQCAtNTQsMTAgKzU0LDEwIEBAIHByaXZhdGU6CiAKICAgICBIVE1MRWxlbWVudCogZml4
T3JwaGFuZWRMaXN0Q2hpbGQoTm9kZSopOwogICAgIGJvb2wgc2VsZWN0aW9uSGFzTGlzdE9mVHlw
ZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBtZXJnZVdpdGhOZWlnaGJvcmluZ0xpc3Rz
KFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+KTsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1lcmdl
V2l0aE5laWdoYm9yaW5nTGlzdHMoUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4pOwogICAgIHZvaWQg
ZG9BcHBseUZvclNpbmdsZVBhcmFncmFwaChib29sIGZvcmNlQ3JlYXRlTGlzdCwgY29uc3QgSFRN
TFF1YWxpZmllZE5hbWUmLCBSYW5nZSogY3VycmVudFNlbGVjdGlvbik7CiAgICAgdm9pZCB1bmxp
c3RpZnlQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvcmlnaW5hbFN0YXJ0LCBIVE1M
RWxlbWVudCogbGlzdE5vZGUsIE5vZGUqIGxpc3RDaGlsZE5vZGUpOwotICAgIFBhc3NSZWZQdHI8
SFRNTEVsZW1lbnQ+IGxpc3RpZnlQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvcmln
aW5hbFN0YXJ0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBsaXN0VGFnKTsKKyAgICBSZWZQdHI8SFRN
TEVsZW1lbnQ+IGxpc3RpZnlQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvcmlnaW5h
bFN0YXJ0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBsaXN0VGFnKTsKICAgICBSZWZQdHI8SFRNTEVs
ZW1lbnQ+IG1fbGlzdEVsZW1lbnQ7CiAgICAgVHlwZSBtX3R5cGU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCBmM2JhOWU1Li42Nzk2NDgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAt
NDgsNyArNDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogICAgIAogY2xhc3MgRlRQ
RGlyZWN0b3J5RG9jdW1lbnRQYXJzZXIgZmluYWwgOiBwdWJsaWMgSFRNTERvY3VtZW50UGFyc2Vy
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGVFBEaXJlY3RvcnlEb2N1bWVudFBh
cnNlcj4gY3JlYXRlKEhUTUxEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgc3RhdGljIFJlZlB0cjxG
VFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcj4gY3JlYXRlKEhUTUxEb2N1bWVudCYgZG9jdW1lbnQp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZUUERpcmVjdG9yeURvY3VtZW50
UGFyc2VyKGRvY3VtZW50KSk7CiAgICAgfQpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBh
cHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc2l6ZSwgY29uc3Qg
U3RyaW5nJiBkYXRlLCBib29sIGlzRGlyZWN0b3J5KTsgICAgCi0gICAgUGFzc1JlZlB0cjxFbGVt
ZW50PiBjcmVhdGVUREZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxFbGVt
ZW50PiBjcmVhdGVUREZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwogCiAgICAgUmVmUHRyPEhU
TUxUYWJsZUVsZW1lbnQ+IG1fdGFibGVFbGVtZW50OwogCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9p
ZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW4KICAgICByb3dFbGVtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50
LCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBGVFBEaXJlY3Rv
cnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlVERGb3JGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVu
YW1lKQorUmVmUHRyPEVsZW1lbnQ+IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVhdGVU
REZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiB7CiAgICAgU3RyaW5nIGZ1bGxV
UkwgPSBkb2N1bWVudCgpLT5iYXNlVVJMKCkuc3RyaW5nKCk7CiAgICAgaWYgKGZ1bGxVUkwuZW5k
c1dpdGgoJy8nKSkKQEAgLTI3MywxOSArMjczLDE5IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1l
bnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkK
ICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXplU3RyaW5nKHJlc3VsdC5m
aWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpLCBwcm9jZXNzRmlsZURh
dGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9y
eUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoU2V0dGluZ3MqIHNldHRpbmdzKQorc3RhdGljIGlubGlu
ZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShTZXR0aW5n
cyogc2V0dGluZ3MpCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gMDsKICAg
ICBpZiAoc2V0dGluZ3MpCiAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLT5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAg
ICAgaWYgKGJ1ZmZlcikKICAgICAgICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1w
bGF0ZSBvZiBsZW5ndGggJWlcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICByZXR1cm4gYnVmZmVy
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogICAgIAogYm9vbCBGVFBEaXJlY3Rv
cnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBT
aGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVu
dERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBTaGFy
ZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERh
dGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkucmVsZWFzZSgpLmxlYWtSZWYoKTsKICAgICAvLyBG
SVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCB3ZSdkIHJhdGhlciBhY3R1YWxseSBw
YXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZSB0ZW1wbGF0ZSBEb2N1bWVudCBvbmNlLAog
ICAgIC8vIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdl
dCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuICBUaGVyZSBhcmUgY29tcGxleGl0aWVzIHdpdGgg
dGhpcyAKICAgICAvLyBhcHByb2FjaCB0aGF0IG1ha2UgaXQgd29ydGggcHV0dGluZyB0aGlzIG9m
Zi4KQEAgLTQzMiw3ICs0MzIsNyBAQCBGVFBEaXJlY3RvcnlEb2N1bWVudDo6RlRQRGlyZWN0b3J5
RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICNlbmRpZgogfQogCi1QYXNz
UmVmUHRyPERvY3VtZW50UGFyc2VyPiBGVFBEaXJlY3RvcnlEb2N1bWVudDo6Y3JlYXRlUGFyc2Vy
KCkKK1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OmNyZWF0ZVBh
cnNlcigpCiB7CiAgICAgcmV0dXJuIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVhdGUo
KnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oCmlu
ZGV4IDZkNzhjZjYuLjdjYTE5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmgKQEAgLTMzLDE0ICszMywxNCBAQCBjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsK
ICAgICAKIGNsYXNzIEZUUERpcmVjdG9yeURvY3VtZW50IGZpbmFsIDogcHVibGljIEhUTUxEb2N1
bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RlRQRGlyZWN0b3J5RG9jdW1l
bnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWZQ
dHI8RlRQRGlyZWN0b3J5RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
dXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGVFBEaXJlY3RvcnlEb2N1
bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIEZUUERpcmVjdG9yeURv
Y3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3Vt
ZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxE
b2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CiB9OwogICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAppbmRleCAyZmM3ODYzLi4yNTQ1ODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNo
b3JFbGVtZW50LmNwcApAQCAtNjMsMTIgKzYzLDEyIEBAIEhUTUxBbmNob3JFbGVtZW50OjpIVE1M
QW5jaG9yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
CiB7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IEhUTUxBbmNob3JFbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxBbmNob3JFbGVtZW50PiBI
VE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxBbmNob3JFbGVtZW50KGFUYWcsIGRvY3VtZW50KSk7CiB9CiAK
LVBhc3NSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRy
PEhUTUxBbmNob3JFbGVtZW50PiBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEhUTUxBbmNob3JFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKaW5kZXggMTRhMjc5ZC4uMGYyZDUwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaApAQCAtNTcsOCArNTcsOCBA
QCBlbnVtIHsKIAogY2xhc3MgSFRNTEFuY2hvckVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxBbmNob3JFbGVtZW50PiBjcmVh
dGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQW5jaG9yRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQ
dHI8SFRNTEFuY2hvckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQ
dHI8SFRNTEFuY2hvckVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKIAogICAgIHZpcnR1YWwgfkhUTUxBbmNob3JFbGVtZW50KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKaW5kZXggNWNmYTViNy4uYWZlMjFhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKQEAgLTQ4LDcgKzQ4LDcg
QEAgSFRNTEFwcGxldEVsZW1lbnQ6OkhUTUxBcHBsZXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2MKICAgICBtX3NlcnZpY2VUeXBlID0gImFwcGxpY2F0
aW9uL3gtamF2YS1hcHBsZXQiOwogfQogCi1QYXNzUmVmUHRyPEhUTUxBcHBsZXRFbGVtZW50PiBI
VE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCitSZWZQdHI8SFRNTEFwcGxl
dEVsZW1lbnQ+IEhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxBcHBsZXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
LCBjcmVhdGVkQnlQYXJzZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFwcGxldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1l
bnQuaAppbmRleCA0YzgxODhmLi4yMDVhZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBw
bGV0RWxlbWVudC5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSFRNTEFwcGxldEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEFwcGxldEVsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNl
cik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MQXBwbGV0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAogcHJpdmF0
ZToKICAgICBIVE1MQXBwbGV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
LCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVu
dC5jcHAKaW5kZXggY2E3ZGVjNS4uNzlhMTAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFy
ZWFFbGVtZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBpbmxpbmUgSFRNTEFyZWFFbGVtZW50OjpI
VE1MQXJlYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmCiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoYXJlYVRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxBcmVh
RWxlbWVudD4gSFRNTEFyZWFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxBcmVhRWxlbWVudD4gSFRNTEFy
ZWFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEFyZWFFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaApp
bmRleCA4ZGI3NTg5Li5iN2MxNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50
LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUGF0aDsKIAogY2xhc3MgSFRNTEFyZWFFbGVtZW50
IGZpbmFsIDogcHVibGljIEhUTUxBbmNob3JFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIVE1MQXJlYUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxBcmVhRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgYm9vbCBpc0RlZmF1bHQoKSBj
b25zdCB7IHJldHVybiBtX3NoYXBlID09IERlZmF1bHQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF1ZGlvRWxlbWVudC5jcHAKaW5kZXggNjU3MzdiMC4uMzMzZDMxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCkBAIC0zOSwxNCArMzksMTQgQEAgSFRNTEF1
ZGlvRWxlbWVudDo6SFRNTEF1ZGlvRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW0KICAgICBBU1NFUlQoaGFzVGFnTmFtZShhdWRpb1RhZykpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKQorUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQs
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIFJlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBh
dWRpb0VsZW1lbnQoYWRvcHRSZWYobmV3IEhUTUxBdWRpb0VsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQsIGNyZWF0ZWRCeVBhcnNlcikpKTsKICAgICBhdWRpb0VsZW1lbnQtPnN1c3BlbmRJZk5lZWRl
ZCgpOwotICAgIHJldHVybiBhdWRpb0VsZW1lbnQucmVsZWFzZSgpOworICAgIHJldHVybiBhdWRp
b0VsZW1lbnQ7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxl
bWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgc3JjKQorUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNy
ZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHNy
YykKIHsKICAgICBSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gYXVkaW8gPSBhZG9wdFJlZihuZXcg
SFRNTEF1ZGlvRWxlbWVudChhdWRpb1RhZywgZG9jdW1lbnQsIGZhbHNlKSk7CiAgICAgYXVkaW8t
PnNldFByZWxvYWQoImF1dG8iKTsKQEAgLTU1LDcgKzU1LDcgQEAgUGFzc1JlZlB0cjxIVE1MQXVk
aW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3Vt
ZW50JgogICAgICAgICBhdWRpby0+c2NoZWR1bGVEZWxheWVkQWN0aW9uKEhUTUxNZWRpYUVsZW1l
bnQ6OkxvYWRNZWRpYVJlc291cmNlKTsKICAgICB9CiAgICAgYXVkaW8tPnN1c3BlbmRJZk5lZWRl
ZCgpOwotICAgIHJldHVybiBhdWRpby5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGF1ZGlvOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oCmluZGV4IDUxOGQ1NGUuLmEw
MWUyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oCkBAIC0zNiw4ICsz
Niw4IEBAIGNsYXNzIERvY3VtZW50OwogCiBjbGFzcyBIVE1MQXVkaW9FbGVtZW50IGZpbmFsIDog
cHVibGljIEhUTUxNZWRpYUVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhUTUxBdWRpb0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
LCBib29sKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBjcmVhdGVG
b3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBzcmMpOworICAgIHN0YXRp
YyBSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYsIGJvb2wpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gY3Jl
YXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgc3JjKTsKIAogcHJp
dmF0ZToKICAgICBIVE1MQXVkaW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQkRJRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQkRJRWxlbWVudC5oCmluZGV4IGQ1ZWM0YmYu
LmVmODFjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJESUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCRElFbGVtZW50LmgKQEAgLTI3LDcgKzI3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MQkRJRWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TEJESUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCisgICAgc3RhdGljIFJlZlB0cjxIVE1MQkRJRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEJESUVsZW1lbnQobmFtZSwgZG9jdW1lbnQpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAppbmRleCA2MTczNzMwLi41YTg0
ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKQEAgLTM5LDEyICszOSwx
MiBAQCBIVE1MQlJFbGVtZW50OjpIVE1MQlJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICBBU1NFUlQoaGFzVGFnTmFtZShiclRhZykp
OwogfQogCi1QYXNzUmVmUHRyPEhUTUxCUkVsZW1lbnQ+IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTEJSRWxlbWVudD4gSFRNTEJSRWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxCUkVsZW1lbnQoYnJUYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEJSRWxl
bWVudD4gSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MQlJFbGVtZW50PiBIVE1MQlJFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEJSRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaAppbmRleCBiNTQzOWM1Li5k
NThhNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaApAQCAtMzAsOCArMzAsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxCUkVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxCUkVs
ZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxCUkVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEhUTUxCUkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBS
ZWZQdHI8SFRNTEJSRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogCiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVs
ZW1lbnQuY3BwCmluZGV4IDdlOGQyNzYuLjg3MjcxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCYXNlRWxlbWVudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgaW5saW5lIEhUTUxCYXNlRWxlbWVu
dDo6SFRNTEJhc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JgogICAgIEFTU0VSVChoYXNUYWdOYW1lKGJhc2VUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1M
QmFzZUVsZW1lbnQ+IEhUTUxCYXNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MQmFzZUVsZW1lbnQ+IEhU
TUxCYXNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxCYXNlRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQmFzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50
LmgKaW5kZXggYjc5OWYxZi4uMGYyZDUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQmFzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxl
bWVudC5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRN
TEJhc2VFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxIVE1MQmFzZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxCYXNlRWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgVVJMIGhyZWYoKSBj
b25zdDsKICAgICB2b2lkIHNldEhyZWYoY29uc3QgQXRvbWljU3RyaW5nJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50LmNwcAppbmRleCA0OTlmOTRiLi5hNGZhOWZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRm9udEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VGb250RWxlbWVudC5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAgaW5saW5lIEhUTUxCYXNlRm9udEVsZW1lbnQ6OkhUTUxCYXNlRm9udEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG8KICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShiYXNlZm9udFRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxCYXNlRm9udEVsZW1lbnQ+IEhU
TUxCYXNlRm9udEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTEJhc2VGb250RWxlbWVudD4gSFRNTEJhc2VG
b250RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxCYXNlRm9udEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJhc2VGb250RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUZv
bnRFbGVtZW50LmgKaW5kZXggMzI4ZjY2Zi4uYTRiYWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQmFzZUZvbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQmFzZUZvbnRFbGVtZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIVE1MQmFzZUZvbnRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVt
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQmFzZUZvbnRFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJl
ZlB0cjxIVE1MQmFzZUZvbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEJhc2VGb250RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50
LmNwcAppbmRleCA2MTNkOGNlLi41NjY5Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9k
eUVsZW1lbnQuY3BwCkBAIC00NywxMiArNDcsMTIgQEAgSFRNTEJvZHlFbGVtZW50OjpIVE1MQm9k
eUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW4K
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShib2R5VGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEJv
ZHlFbGVtZW50PiBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCitS
ZWZQdHI8SFRNTEJvZHlFbGVtZW50PiBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQm9keUVsZW1lbnQoYm9k
eVRhZywgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IEhUTUxC
b2R5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IEhUTUxCb2R5RWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxCb2R5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmgKaW5kZXggMGQ0ZDYwYS4u
MDZjMmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCkBAIC0zMiw4ICsz
Miw4IEBAIGNsYXNzIERvY3VtZW50OwogCiBjbGFzcyBIVE1MQm9keUVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxC
b2R5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TEJvZHlFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7Cisg
ICAgc3RhdGljIFJlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOworICAg
IHN0YXRpYyBSZWZQdHI8SFRNTEJvZHlFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+SFRNTEJvZHlFbGVtZW50KCk7CiAKICAgICAv
LyBEZWNsYXJlZCB2aXJ0dWFsIGluIEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0
dG9uRWxlbWVudC5jcHAKaW5kZXggZTVjNDEwNC4uYTFmZjQ4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgaW5saW5lIEhUTUxC
dXR0b25FbGVtZW50OjpIVE1MQnV0dG9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWUKICAgICBBU1NFUlQoaGFzVGFnTmFtZShidXR0b25UYWcpKTsKIH0KIAotUGFz
c1JlZlB0cjxIVE1MQnV0dG9uRWxlbWVudD4gSFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxl
bWVudCogZm9ybSkKK1JlZlB0cjxIVE1MQnV0dG9uRWxlbWVudD4gSFRNTEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQs
IEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxC
dXR0b25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCdXR0b25FbGVtZW50LmgKaW5kZXggMWUwMWVjOC4uYWM2ODdmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxCdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhU
TUxCdXR0b25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jiwg
SFRNTEZvcm1FbGVtZW50Kik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MQnV0dG9uRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCop
OwogCiAgICAgdm9pZCBzZXRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCA4MjAzNjUxLi44NDg4ODdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtODYsMTIg
Kzg2LDEyIEBAIEhUTUxDYW52YXNFbGVtZW50OjpIVE1MQ2FudmFzRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
Y2FudmFzVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IEhUTUxDYW52
YXNFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxDYW52YXNF
bGVtZW50PiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxDYW52YXNFbGVtZW50KGNhbnZhc1RhZywgZG9j
dW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gSFRNTENhbnZhc0Vs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCitSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IEhUTUxDYW52YXNFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTENhbnZhc0VsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpKTsKIH0KQEAgLTQ2Niw3ICs0NjYsNyBAQCBTdHJpbmcgSFRNTENhbnZhc0VsZW1lbnQ6OnRv
RGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxpdAogICAg
IHJldHVybiBidWZmZXIoKS0+dG9EYXRhVVJMKGVuY29kaW5nTWltZVR5cGUsIHF1YWxpdHkpOwog
fQogCi1QYXNzUmVmUHRyPEltYWdlRGF0YT4gSFRNTENhbnZhc0VsZW1lbnQ6OmdldEltYWdlRGF0
YSgpCitSZWZQdHI8SW1hZ2VEYXRhPiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0SW1hZ2VEYXRhKCkK
IHsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgaWYgKCFpczNEKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggOGFiZGU3Ny4uZmZkYTY4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaApAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAK
IGNsYXNzIEhUTUxDYW52YXNFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhU
TUxDYW52YXNFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhU
TUxDYW52YXNFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAgICAgdmlydHVhbCB+SFRNTENhbnZhc0VsZW1lbnQoKTsKIAogICAgIHZvaWQgYWRkT2JzZXJ2
ZXIoQ2FudmFzT2JzZXJ2ZXImKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgSW1h
Z2VCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwogICAgIEltYWdlKiBjb3BpZWRJbWFnZSgpIGNvbnN0
OwogICAgIHZvaWQgY2xlYXJDb3BpZWRJbWFnZSgpOwotICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRh
PiBnZXRJbWFnZURhdGEoKTsKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoKTsK
ICAgICB2b2lkIG1ha2VQcmVzZW50YXRpb25Db3B5KCk7CiAgICAgdm9pZCBjbGVhclByZXNlbnRh
dGlvbkNvcHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRExpc3RF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5jcHAKaW5k
ZXggMDBkMzJjZC4uMTE0NDY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RExpc3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxETGlzdEVsZW1l
bnQuY3BwCkBAIC0zNSw3ICszNSw3IEBAIGlubGluZSBIVE1MRExpc3RFbGVtZW50OjpIVE1MRExp
c3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoZGxUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRExpc3RFbGVtZW50
PiBIVE1MRExpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxETGlzdEVsZW1lbnQ+IEhUTUxETGlzdEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRExpc3RFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
TGlzdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVudC5oCmlu
ZGV4IGExMWFjNWMuLmQ4Mzk3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERMaXN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERMaXN0RWxlbWVu
dC5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTERM
aXN0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTERMaXN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTERMaXN0RWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIEhU
TUxETGlzdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAppbmRleCAxYzAzZjFjLi5jYzk3
NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAKQEAg
LTQzLDEyICs0MywxMiBAQCBpbmxpbmUgSFRNTERhdGFMaXN0RWxlbWVudDo6SFRNTERhdGFMaXN0
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEbwogewogfQogCi1QYXNzUmVm
UHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IEhUTUxEYXRhTGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRN
TERhdGFMaXN0RWxlbWVudD4gSFRNTERhdGFMaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEhUTUxEYXRhTGlzdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAot
UGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTERhdGFMaXN0RWxlbWVudDo6b3B0aW9ucygp
CitSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxEYXRhTGlzdEVsZW1lbnQ6Om9wdGlvbnMoKQog
ewogICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihEYXRhTGlzdE9wdGlvbnMp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaAppbmRleCBjZjFk
M2ZmLi4yMTY5YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlz
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQu
aApAQCAtNDAsOSArNDAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxEYXRh
TGlzdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIFBhc3NS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMoKTsKKyAgICBSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IG9wdGlvbnMoKTsKIAogICAgIHZvaWQgb3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggMjNl
NTYxYy4uYTM1YjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWls
c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmNwcApAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdW1tYXJ5
UXVlcnlTZWxlY3RvcigpCiAKIGNsYXNzIERldGFpbHNDb250ZW50RWxlbWVudCBmaW5hbCA6IHB1
YmxpYyBJbnNlcnRpb25Qb2ludCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGV0
YWlsc0NvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRy
PERldGFpbHNDb250ZW50RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAg
ICAgRGV0YWlsc0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTU4LDE0ICs1
OCwxNCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKLVBhc3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRF
bGVtZW50PiBEZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQp
CitSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBEZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZXRh
aWxzQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAogY2xhc3MgRGV0YWlsc1N1bW1hcnlF
bGVtZW50IGZpbmFsIDogcHVibGljIEluc2VydGlvblBvaW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxEZXRhaWxzU3VtbWFyeUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8RGV0YWlsc1N1bW1hcnlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQm
KTsKIAogICAgIEVsZW1lbnQqIGZhbGxiYWNrU3VtbWFyeSgpCiAgICAgewpAQCAtODcsMjEgKzg3
LDIxIEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotUGFzc1JlZlB0cjxEZXRhaWxzU3VtbWFyeUVs
ZW1lbnQ+IERldGFpbHNTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkK
K1JlZlB0cjxEZXRhaWxzU3VtbWFyeUVsZW1lbnQ+IERldGFpbHNTdW1tYXJ5RWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBSZWZQdHI8SFRNTFN1bW1hcnlFbGVtZW50
PiBzdW1tYXJ5ID0gSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGUoc3VtbWFyeVRhZywgZG9jdW1l
bnQpOwogICAgIHN1bW1hcnktPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgZGVm
YXVsdERldGFpbHNTdW1tYXJ5VGV4dCgpKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICBS
ZWZQdHI8RGV0YWlsc1N1bW1hcnlFbGVtZW50PiBkZXRhaWxzU3VtbWFyeSA9IGFkb3B0UmVmKG5l
dyBEZXRhaWxzU3VtbWFyeUVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBkZXRhaWxzU3VtbWFyeS0+
YXBwZW5kQ2hpbGQoc3VtbWFyeSk7Ci0gICAgcmV0dXJuIGRldGFpbHNTdW1tYXJ5LnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gZGV0YWlsc1N1bW1hcnk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTERldGFp
bHNFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTERldGFpbHNFbGVtZW50
PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgUmVmUHRyPEhUTUxEZXRhaWxzRWxlbWVudD4g
ZGV0YWlscyA9IGFkb3B0UmVmKG5ldyBIVE1MRGV0YWlsc0VsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpKTsKICAgICBkZXRhaWxzLT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgcmV0
dXJuIGRldGFpbHMucmVsZWFzZSgpOworICAgIHJldHVybiBkZXRhaWxzOwogfQogCiBIVE1MRGV0
YWlsc0VsZW1lbnQ6OkhUTUxEZXRhaWxzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEZXRhaWxzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuaAppbmRleCAwNzNjZDU5Li5hOTg5NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERldGFpbHNFbGVtZW50LmgKQEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBIVE1MRGV0YWlsc0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxEZXRhaWxzRWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCk7CisgICAg
c3RhdGljIFJlZlB0cjxIVE1MRGV0YWlsc0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogICAgIHZvaWQgdG9nZ2xlT3BlbigpOwogCiAgICAg
Y29uc3QgRWxlbWVudCogZmluZE1haW5TdW1tYXJ5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuY3BwCmluZGV4IDVjM2QxNWUuLjc3NTE0MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9yeUVsZW1lbnQuY3BwCkBAIC0zNSw3
ICszNSw3IEBAIGlubGluZSBIVE1MRGlyZWN0b3J5RWxlbWVudDo6SFRNTERpcmVjdG9yeUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwKICAgICBBU1NFUlQoaGFzVGFnTmFtZShk
aXJUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRGlyZWN0b3J5RWxlbWVudD4gSFRNTERpcmVj
dG9yeUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTERpcmVjdG9yeUVsZW1lbnQ+IEhUTUxEaXJlY3RvcnlF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERpcmVjdG9yeUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERpcmVjdG9yeUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpcmVjdG9y
eUVsZW1lbnQuaAppbmRleCBmMTc1OWFmLi41MzFhYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEaXJlY3RvcnlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRGlyZWN0b3J5RWxlbWVudC5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSFRNTERpcmVjdG9yeUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxEaXJlY3RvcnlFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEhUTUxEaXJlY3RvcnlFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBIVE1MRGlyZWN0
b3J5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRGl2RWxlbWVudC5jcHAKaW5kZXggYTlhYzBiZi4uYmZjZDQzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBIVE1MRGl2
RWxlbWVudDo6SFRNTERpdkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIEFTU0VSVChoYXNUYWdOYW1lKGRpdlRhZykpOwogfQogCi1Q
YXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MRGl2RWxlbWVudD4gSFRNTERpdkVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRGl2
RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTERpdkVsZW1l
bnQ+IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBIVE1MRGl2RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxEaXZFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmgKaW5kZXggZmY4MWI5
Yi4uNDU0MGVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaApAQCAtMjksOCAr
MjksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxEaXZFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRGl2
RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERp
dkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CiAKIHByb3RlY3RlZDoKICAgICBIVE1MRGl2RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRl
eCA1ODM3NDgyLi5hNjkzZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBA
IC0yMjQsNyArMjI0LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnJlbGVhc2VFdmVudHMoKQogewog
fQogCi1QYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVBhcnNl
cigpCitSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkK
IHsKICAgICByZXR1cm4gSFRNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoKnRoaXMpOwogfQpAQCAt
MjMzLDcgKzIzMyw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6
Y3JlYXRlUGFyc2VyKCkKIC8vIG5vdCBwYXJ0IG9mIHRoZSBET00KIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8RWxlbWVu
dD4gSFRNTERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFpc1ZhbGlkTmFtZShuYW1lKSkgewogICAg
ICAgICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKQEAgLTM0Miw3ICszNDIsNyBAQCBib29s
IEhUTUxEb2N1bWVudDo6aXNGcmFtZVNldCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzPEhUTUxGcmFt
ZVNldEVsZW1lbnQ+KGJvZHkoKSk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+IEhUTUxEb2N1
bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0CitSZWZQdHI8RG9jdW1l
bnQ+IEhUTUxEb2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGNyZWF0ZShudWxscHRyLCB1cmwoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RG9jdW1lbnQuaAppbmRleCBhNjVjMzc5Li45ZTlhYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmgKQEAgLTMxLDEyICszMSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEhUTUxEb2N1bWVudCA6IHB1YmxpYyBEb2N1bWVudCwgcHVibGljIENhY2hlZFJlc291cmNlQ2xp
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnQ+IGNyZWF0
ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBSZWZQdHI8SFRNTERv
Y3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERvY3VtZW50KGZyYW1lLCB1cmwsIEhUTUxEb2N1
bWVudENsYXNzKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50
PiBjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwp
CisgICAgc3RhdGljIFJlZlB0cjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZVN5bnRoZXNpemVkRG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTERvY3VtZW50KGZyYW1lLCB1cmwsIEhUTUxEb2N1bWVudENsYXNzLCBT
eW50aGVzaXplZCkpOwogICAgIH0KQEAgLTg2LDEyICs4NiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAg
SFRNTERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJiwgRG9jdW1lbnRDbGFzc0ZsYWdzID0gMCwg
dW5zaWduZWQgY29uc3RydWN0aW9uRmxhZ3MgPSAwKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIHRh
Z05hbWUsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxFbGVt
ZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0aW9u
Q29kZSYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzRnJhbWVTZXQoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBh
cnNlcigpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50PiBjbG9u
ZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmly
dHVhbCBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPERvY3VtZW50PiBjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9kb2N1bWVu
dE5hbWVkSXRlbTsKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV93aW5kb3dOYW1lZEl0ZW07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGNhNWVlMDkuLmQ4Y2QwOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1lc3BhY2UgV1RG
OwogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MRWxl
bWVudD4gSFRNTEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpAQCAtNDczLDcgKzQ3Myw3IEBAIHZvaWQgSFRNTEVs
ZW1lbnQ6OnNldE91dGVySFRNTChjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgICAgICBtZXJnZVdpdGhOZXh0VGV4dE5vZGUoZG93bmNhc3Q8VGV4dD4oKnByZXYpLCBl
Yyk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gSFRNTEVsZW1lbnQ6OnRleHRU
b0ZyYWdtZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gSFRNTEVsZW1lbnQ6OnRleHRUb0ZyYWdtZW50KGNvbnN0IFN0cmlu
ZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAg
IHVuc2lnbmVkIGludCBpLCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwpAQCAtODM3LDcgKzgzNyw3
IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZShib29sIGVuYWJsZSkKICAgICBzZXRB
dHRyaWJ1dGUodHJhbnNsYXRlQXR0ciwgZW5hYmxlID8gInllcyIgOiAibm8iKTsKIH0KIAotUGFz
c1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTEVsZW1lbnQ6OmNoaWxkcmVuKCkKK1JlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gSFRNTEVsZW1lbnQ6OmNoaWxkcmVuKCkKIHsKICAgICByZXR1cm4gZW5z
dXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oTm9kZUNoaWxkcmVuKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAppbmRleCA3OTM3N2Q2Li42YjQ4NGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5oCkBAIC00MCw5ICs0MCw5IEBAIGVudW0gVHJhbnNsYXRlQXR0cmlidXRlTW9kZSB7CiAK
IGNsYXNzIEhUTUxFbGVtZW50IDogcHVibGljIFN0eWxlZEVsZW1lbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAotICAgIFBh
c3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNoaWxkcmVuKCk7CisgICAgUmVmUHRyPEhUTUxDb2xs
ZWN0aW9uPiBjaGlsZHJlbigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBTdHJpbmcg
dGl0bGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIApAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBIVE1MRm9ybUVsZW1lbnQqIHZpcnR1YWxGb3JtKCkgY29uc3Q7CiAK
ICAgICBOb2RlKiBpbnNlcnRBZGphY2VudChjb25zdCBTdHJpbmcmIHdoZXJlLCBOb2RlKiBuZXdD
aGlsZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
dGV4dFRvRnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiB0ZXh0VG9GcmFnbWVudChjb25zdCBTdHJpbmcmLCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICB2b2lkIGRpckF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3Ry
aW5nJik7CiAgICAgdm9pZCBhZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZEF0
dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCogY2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5jcHAKaW5kZXggNTkzODE3My4uODQ5MWE3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIGlubGluZSBIVE1MRW1i
ZWRFbGVtZW50OjpIVE1MRW1iZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZW1iZWRUYWcpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxIVE1MRW1iZWRFbGVtZW50PiBIVE1MRW1iZWRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBh
cnNlcikKK1JlZlB0cjxIVE1MRW1iZWRFbGVtZW50PiBIVE1MRW1iZWRFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNy
ZWF0ZWRCeVBhcnNlcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxFbWJlZEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuaAppbmRleCBiMmU2NjBmLi5iYWJjYjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxFbWJlZEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTFBs
dWdJbkltYWdlRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEVt
YmVkRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxFbWJlZEVsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNl
cik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEVtYmVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAppbmRleCAyZmU0YTYyLi4wMWRkZjQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgSFRNTEZpZWxkU2V0RWxlbWVudDo6fkhUTUxGaWVsZFNldEVsZW1lbnQoKQogICAgICAgICBk
b2N1bWVudCgpLnJlbW92ZURpc2FibGVkRmllbGRzZXRFbGVtZW50KCk7CiB9CiAKLVBhc3NSZWZQ
dHI8SFRNTEZpZWxkU2V0RWxlbWVudD4gSFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVt
ZW50KiBmb3JtKQorUmVmUHRyPEhUTUxGaWVsZFNldEVsZW1lbnQ+IEhUTUxGaWVsZFNldEVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxGaWVsZFNldEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KQEAgLTE1OSw3
ICsxNTksNyBAQCBIVE1MTGVnZW5kRWxlbWVudCogSFRNTEZpZWxkU2V0RWxlbWVudDo6bGVnZW5k
KCkgY29uc3QKICAgICByZXR1cm4gY29uc3RfY2FzdDxIVE1MTGVnZW5kRWxlbWVudCo+KGNoaWxk
cmVuT2ZUeXBlPEhUTUxMZWdlbmRFbGVtZW50PigqdGhpcykuZmlyc3QoKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKCkKK1Jl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTEZpZWxkU2V0RWxlbWVudDo6ZWxlbWVudHMoKQogewog
ICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihGb3JtQ29udHJvbHMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAppbmRleCA0MDEwNDBhLi5l
MTc1MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaApAQCAt
MzQsMTAgKzM0LDEwIEBAIGNsYXNzIEhUTUxDb2xsZWN0aW9uOwogCiBjbGFzcyBIVE1MRmllbGRT
ZXRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGaWVsZFNldEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEhUTUxGaWVsZFNldEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAogICAgIEhUTUxMZWdlbmRFbGVtZW50
KiBsZWdlbmQoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBlbGVtZW50
cygpOworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZWxlbWVudHMoKTsKIAogICAgIGNvbnN0
IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgYXNzb2NpYXRlZEVsZW1lbnRzKCkgY29u
c3Q7CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b250RWxlbWVudC5jcHAKaW5kZXggN2QyN2ZmZC4uYzBkZTRjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvbnRFbGVtZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBIVE1MRm9udEVsZW1lbnQ6
OkhUTUxGb250RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbgogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZvbnRUYWcpKTsKIH0KIAotUGFzc1JlZlB0
cjxIVE1MRm9udEVsZW1lbnQ+IEhUTUxGb250RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MRm9udEVsZW1l
bnQ+IEhUTUxGb250RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGb250
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRF
bGVtZW50LmgKaW5kZXggZTVjM2RhYS4uMTk0MGYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b250RWxlbWVudC5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSFRNTEZvbnRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRm9udEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxGb250RWxlbWVu
dD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIAogICAgIHN0
YXRpYyBib29sIGNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVyKGNvbnN0IFN0cmluZyYsIENTU1Zh
bHVlSUQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGUz
NDk3ZWUuLjVjYmRiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
QEAgLTcxLDEyICs3MSwxMiBAQCBIVE1MRm9ybUVsZW1lbnQ6OkhUTUxGb3JtRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbgogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGZvcm1UYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IEhU
TUxGb3JtRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MRm9y
bUVsZW1lbnQ+IEhUTUxGb3JtRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGb3JtRWxlbWVudChmb3JtVGFnLCBkb2N1bWVu
dCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSFRNTEZvcm1FbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQor
UmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSFRNTEZvcm1FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSFRNTEZvcm1FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CkBAIC02
NDAsNyArNjQwLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZUltZ0VsZW1lbnQoSFRN
TEltYWdlRWxlbWVudCogZSkKICAgICByZW1vdmVGcm9tVmVjdG9yKG1faW1hZ2VFbGVtZW50cywg
ZSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxGb3JtRWxlbWVudDo6ZWxl
bWVudHMoKQorUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MRm9ybUVsZW1lbnQ6OmVsZW1lbnRz
KCkKIHsKICAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oRm9ybUNvbnRyb2xz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IDhjYmU5MjAuLjM4
YWFiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtNDYsMTEgKzQ2
LDExIEBAIGNsYXNzIFRleHRFbmNvZGluZzsKIAogY2xhc3MgSFRNTEZvcm1FbGVtZW50IGZpbmFs
IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
VE1MRm9ybUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhUTUxGb3JtRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgfkhUTUxGb3JtRWxlbWVudCgpOwogCi0g
ICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZWxlbWVudHMoKTsKKyAgICBSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IGVsZW1lbnRzKCk7CiAgICAgYm9vbCBoYXNOYW1lZEVsZW1lbnQoY29uc3Qg
QXRvbWljU3RyaW5nJik7CiAgICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRFbGVtZW50cyhj
b25zdCBBdG9taWNTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dC5jcHAKaW5kZXggNTdjZjgyMC4uZDY1NWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnQuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGlubGluZSBIVE1MRnJhbWVFbGVtZW50
OjpIVE1MRnJhbWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8SFRNTEZyYW1lRWxlbWVudD4gSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MRnJhbWVF
bGVtZW50PiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TEZyYW1lRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnQuaAppbmRleCBiMjhlNzY0Li5kNGQ2MWM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnQuaApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEhUTUxGcmFtZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEZyYW1lRWxl
bWVudEJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGcmFtZUVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEhUTUxGcmFtZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIAogICAgIGJvb2wgaGFzRnJhbWVCb3JkZXIoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lQm9yZGVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
Y3BwCmluZGV4IDdhNGQwMmIuLjJiNDE0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcApAQCAtNTgsNyArNTgsNyBAQCBIVE1MRnJhbWVTZXRFbGVtZW50
OjpIVE1MRnJhbWVTZXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JgogICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogfQogCi1QYXNz
UmVmUHRyPEhUTUxGcmFtZVNldEVsZW1lbnQ+IEhUTUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8
SFRNTEZyYW1lU2V0RWxlbWVudD4gSFRNTEZyYW1lU2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxGcmFtZVNldEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKaW5kZXggMjcyOTM4Yy4u
YTNiMjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRnJhbWVTZXRF
bGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIVE1MRnJhbWVTZXRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MRnJhbWVTZXRFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBib29sIGhhc0Zy
YW1lQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZWJvcmRlcjsgfQogICAgIGJvb2wgbm9S
ZXNpemUoKSBjb25zdCB7IHJldHVybiBtX25vcmVzaXplOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SFJFbGVtZW50LmNwcAppbmRleCAxYjdiZTdjLi42MGExZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEhSRWxlbWVudC5jcHAKQEAgLTQwLDEyICs0MCwxMiBAQCBIVE1MSFJFbGVtZW50OjpIVE1M
SFJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKICAgICBBU1NFUlQoaGFzVGFnTmFtZShoclRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxI
UkVsZW1lbnQ+IEhUTUxIUkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQ
dHI8SFRNTEhSRWxlbWVudD4gSFRNTEhSRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxIUkVsZW1lbnQoaHJUYWcsIGRvY3Vt
ZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gSFRNTEhSRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1Jl
ZlB0cjxIVE1MSFJFbGVtZW50PiBIVE1MSFJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSFRNTEhSRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxIUkVsZW1lbnQuaAppbmRleCAxNWJiMmE1Li40NDJmNDA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxIUkVsZW1lbnQuaApAQCAtMjksOCArMjksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEhUTUxIUkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxIUkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYp
OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxIUkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxIUkVsZW1lbnQ+
IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEhSRWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIEhU
TUxIUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxIZWFkRWxlbWVudC5jcHAKaW5kZXggMDk0ZmYzYy4uOGE0NWRhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcApAQCAtMzcsMTIgKzM3LDEyIEBAIEhU
TUxIZWFkRWxlbWVudDo6SFRNTEhlYWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaGVhZFRhZykpOwog
fQogCi1QYXNzUmVmUHRyPEhUTUxIZWFkRWxlbWVudD4gSFRNTEhlYWRFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxIZWFkRWxlbWVudD4gSFRNTEhlYWRFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTEhlYWRFbGVtZW50KGhlYWRUYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8
SFRNTEhlYWRFbGVtZW50PiBIVE1MSGVhZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTEhlYWRFbGVtZW50
PiBIVE1MSGVhZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSGVhZEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEhlYWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkRWxl
bWVudC5oCmluZGV4IGFhZmZlMTAuLjJhYTg3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEhlYWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVh
ZEVsZW1lbnQuaApAQCAtMzAsOCArMzAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEhUTUxIZWFkRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEhlYWRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSGVhZEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxIZWFkRWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MSGVhZEVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAg
ICBIVE1MSGVhZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5jcHAKaW5kZXggNDdlYzY2My4uZGVk
Y2RjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcApAQCAt
MzAsNyArMzAsNyBAQCBpbmxpbmUgSFRNTEhlYWRpbmdFbGVtZW50OjpIVE1MSGVhZGluZ0VsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdQogewogfQogCi1QYXNzUmVmUHRy
PEhUTUxIZWFkaW5nRWxlbWVudD4gSFRNTEhlYWRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxIZWFk
aW5nRWxlbWVudD4gSFRNTEhlYWRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTEhlYWRpbmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuaAppbmRleCBmNzVmZmU3Li5jOWM5MTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MSGVhZGluZ0VsZW1lbnQgZmluYWwgOiBw
dWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxI
ZWFkaW5nRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8SFRNTEhlYWRpbmdFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTEhlYWRpbmdFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SHRtbEVsZW1lbnQuY3BwCmluZGV4IDllNDFkMzEuLjc4M2U5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxIdG1sRWxlbWVudC5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQCBIVE1MSHRtbEVsZW1l
bnQ6OkhUTUxIdG1sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbgogICAgIEFTU0VSVChoYXNUYWdOYW1lKGh0bWxUYWcpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxIVE1MSHRtbEVsZW1lbnQ+IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCkKK1JlZlB0cjxIVE1MSHRtbEVsZW1lbnQ+IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxIdG1s
RWxlbWVudChodG1sVGFnLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxIdG1sRWxl
bWVudD4gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxIdG1sRWxlbWVudD4gSFRNTEh0bWxF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEh0bWxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxI
dG1sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuaAppbmRl
eCAwZjgzYjlhLi41NDllMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxI
dG1sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmgK
QEAgLTMwLDggKzMwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MSHRtbEVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxIdG1sRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTEh0bWxFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MSHRtbEVsZW1lbnQ+IGNyZWF0ZShE
b2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTEh0bWxFbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB2b2lkIGluc2VydGVkQnlQYXJz
ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRleCAz
NWE1NmYzLi5hZmE3NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJh
bWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBpbmxpbmUgSFRNTElGcmFtZUVsZW1lbnQ6OkhUTUxJRnJh
bWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZQogICAgIEFTU0VS
VChoYXNUYWdOYW1lKGlmcmFtZVRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxJRnJhbWVFbGVt
ZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MSUZyYW1lRWxlbWVudD4gSFRNTElG
cmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSUZyYW1lRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5oCmluZGV4IGYwZWJjZWMuLjlhYWFjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBIVE1MSUZyYW1lRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRnJhbWVFbGVtZW50QmFz
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTElGcmFtZUVsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEhUTUxJRnJhbWVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTElGcmFtZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApp
bmRleCA5OTk5ZjZiLi4yZDliYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAKQEAgLTY1LDEyICs2NSwxMiBAQCBIVE1MSW1hZ2VFbGVtZW50OjpIVE1MSW1hZ2VF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAg
ICAgICBmb3JtLT5yZWdpc3RlckltZ0VsZW1lbnQodGhpcyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRN
TEltYWdlRWxlbWVudD4gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCkKK1JlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEltYWdlRWxl
bWVudChpbWdUYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEltYWdlRWxlbWVu
dD4gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQorUmVmUHRyPEhUTUxJ
bWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxJbWFnZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQsIGZvcm0pKTsKIH0KQEAgLTgxLDcgKzgxLDcgQEAgSFRNTEltYWdlRWxlbWVudDo6fkhUTUxJ
bWFnZUVsZW1lbnQoKQogICAgICAgICBtX2Zvcm0tPnJlbW92ZUltZ0VsZW1lbnQodGhpcyk7CiB9
CiAKLVBhc3NSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRl
Rm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IGludCogb3B0aW9uYWxX
aWR0aCwgY29uc3QgaW50KiBvcHRpb25hbEhlaWdodCkKK1JlZlB0cjxIVE1MSW1hZ2VFbGVtZW50
PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgaW50KiBvcHRpb25hbFdpZHRoLCBjb25zdCBpbnQqIG9wdGlvbmFsSGVpZ2h0
KQogewogICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9IGFkb3B0UmVmKG5ldyBI
VE1MSW1hZ2VFbGVtZW50KGltZ1RhZywgZG9jdW1lbnQpKTsKICAgICBpZiAob3B0aW9uYWxXaWR0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggOTlmZTI1Yi4uZmQ1
ZTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTM3LDkgKzM3
LDkgQEAgc3RydWN0IEltYWdlQ2FuZGlkYXRlOwogY2xhc3MgSFRNTEltYWdlRWxlbWVudCA6IHB1
YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIEZvcm1OYW1lZEl0ZW0gewogICAgIGZyaWVuZCBjbGFz
cyBIVE1MRm9ybUVsZW1lbnQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTElt
YWdlRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TEltYWdlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhU
TUxGb3JtRWxlbWVudCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+
IGNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQmLCBjb25zdCBpbnQqIG9wdGlvbmFsV2lk
dGgsIGNvbnN0IGludCogb3B0aW9uYWxIZWlnaHQpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTElt
YWdlRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MSW1h
Z2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZv
cm1FbGVtZW50Kik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBjcmVhdGVG
b3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiwgY29uc3QgaW50KiBvcHRpb25hbFdpZHRoLCBjb25z
dCBpbnQqIG9wdGlvbmFsSGVpZ2h0KTsKIAogICAgIHZpcnR1YWwgfkhUTUxJbWFnZUVsZW1lbnQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNTNkODY3
OS4uOTcyYWM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBA
IC0xMjksMTMgKzEyOSwxMyBAQCBIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgIHNldEhhc0N1
c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxJbnB1dEVs
ZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIpCitSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwg
SFRNTEZvcm1FbGVtZW50KiBmb3JtLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAgICBib29s
IHNob3VsZENyZWF0ZVNoYWRvd1Jvb3RMYXppbHkgPSBjcmVhdGVkQnlQYXJzZXI7CiAgICAgUmVm
UHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGlucHV0RWxlbWVudCA9IGFkb3B0UmVmKG5ldyBIVE1MSW5w
dXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIpKTsKICAg
ICBpZiAoIXNob3VsZENyZWF0ZVNoYWRvd1Jvb3RMYXppbHkpCiAgICAgICAgIGlucHV0RWxlbWVu
dC0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgIHJldHVybiBpbnB1dEVsZW1lbnQu
cmVsZWFzZSgpOworICAgIHJldHVybiBpbnB1dEVsZW1lbnQ7CiB9CiAKIEhUTUxJbWFnZUxvYWRl
ciYgSFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCBlYzBmMzY1Li4zZmU1NzdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtNjMsNyArNjMsNyBAQCBzdHJ1Y3QgSW5wdXRF
bGVtZW50Q2xpY2tTdGF0ZSB7CiAKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQgOiBwdWJsaWMgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhUTUxJbnB1dEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
LCBIVE1MRm9ybUVsZW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CisgICAgc3RhdGljIFJl
ZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50JiwgSFRNTEZvcm1FbGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZpcnR1
YWwgfkhUTUxJbnB1dEVsZW1lbnQoKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIod2Via2l0c3BlZWNoY2hhbmdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2Vu
RWxlbWVudC5jcHAKaW5kZXggMWY1ZDY3Zi4uODZmOWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAogY2xhc3MgS2V5Z2VuU2VsZWN0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MU2VsZWN0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Z2Vu
U2VsZWN0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKKyAgICBzdGF0aWMgUmVm
UHRyPEtleWdlblNlbGVjdEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEtleWdlblNlbGVjdEVsZW1lbnQoZG9jdW1l
bnQpKTsKICAgICB9CkBAIC01OCw3ICs1OCw3IEBAIHByb3RlY3RlZDoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRB
dHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBvdmVycmlkZQorICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1l
bnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpKTsKICAgICB9CkBAIC04Myw3
ICs4Myw3IEBAIGlubGluZSBIVE1MS2V5Z2VuRWxlbWVudDo6SFRNTEtleWdlbkVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lCiAgICAgZW5zdXJlVXNlckFnZW50U2hh
ZG93Um9vdCgpLmFwcGVuZENoaWxkKHNlbGVjdCwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKLVBh
c3NSZWZQdHI8SFRNTEtleWdlbkVsZW1lbnQ+IEhUTUxLZXlnZW5FbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVs
ZW1lbnQqIGZvcm0pCitSZWZQdHI8SFRNTEtleWdlbkVsZW1lbnQ+IEhUTUxLZXlnZW5FbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1M
S2V5Z2VuRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oCmluZGV4IDFkMjA4ZjguLmY4MDViYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3Mg
SFRNTFNlbGVjdEVsZW1lbnQ7CiAKIGNsYXNzIEhUTUxLZXlnZW5FbGVtZW50IGZpbmFsIDogcHVi
bGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEhUTUxLZXlnZW5FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1M
S2V5Z2VuRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhU
TUxGb3JtRWxlbWVudCopOwogCiBwcml2YXRlOgogICAgIEhUTUxLZXlnZW5FbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExJRWxlbWVudC5jcHAKaW5kZXggODI3YjM2MS4uNDg2MzEwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCkBAIC00MSwxMiArNDEsMTIgQEAgSFRNTExJRWxl
bWVudDo6SFRNTExJRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CiB9
CiAKLVBhc3NSZWZQdHI8SFRNTExJRWxlbWVudD4gSFRNTExJRWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MTElFbGVtZW50PiBIVE1MTElFbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTExJ
RWxlbWVudChsaVRhZywgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MTElFbGVtZW50
PiBIVE1MTElFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxMSUVsZW1lbnQ+IEhUTUxMSUVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTElFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5oCmluZGV4IGU3NjEzMDAuLjNjMmVh
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5oCkBAIC0yOSw4ICsyOSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTExJRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTExJRWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTExJRWxlbWVu
dD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBS
ZWZQdHI8SFRNTExJRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0
cjxIVE1MTElFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAKIHByaXZhdGU6CiAgICAgSFRNTExJRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCmluZGV4IDJl
MTk4ODkuLjZlY2YwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVs
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNw
cApAQCAtNTAsNyArNTAsNyBAQCBpbmxpbmUgSFRNTExhYmVsRWxlbWVudDo6SFRNTExhYmVsRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudAogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGxhYmVsVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTExhYmVsRWxlbWVudD4g
SFRNTExhYmVsRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MTGFiZWxFbGVtZW50PiBIVE1MTGFiZWxFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTExhYmVsRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFi
ZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuaAppbmRl
eCBjYThlZTYwLi40NzM1NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
YWJlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQu
aApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxMYWJl
bEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEhUTUxMYWJlbEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxMYWJlbEVsZW1lbnQ+IGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIExhYmVsYWJsZUVsZW1l
bnQqIGNvbnRyb2woKTsKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAKaW5kZXggYTE5N2MyMS4uZWFmOWIx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgaW5saW5lIEhUTUxMZWdlbmRFbGVtZW50OjpIVE1MTGVnZW5kRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWUKICAgICBBU1NFUlQoaGFzVGFnTmFtZShs
ZWdlbmRUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MTGVnZW5kRWxlbWVudD4gSFRNTExlZ2Vu
ZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCitSZWZQdHI8SFRNTExlZ2VuZEVsZW1lbnQ+IEhUTUxMZWdlbmRFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTExlZ2VuZEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuaAppbmRleCA5
MTA0YWJkLi5mYTM4ODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdl
bmRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5o
CkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ7CiAKIGNsYXNz
IEhUTUxMZWdlbmRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTGVnZW5kRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTExlZ2VuZEVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogcHJpdmF0
ZToKICAgICBIVE1MTGVnZW5kRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCA2OTY0MWYxLi41
YTg3YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC04MSw3
ICs4MSw3IEBAIGlubGluZSBIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYKICAgICBBU1NFUlQoaGFzVGFnTmFtZShs
aW5rVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTExpbmtFbGVtZW50PiBIVE1MTGlua0VsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQorUmVmUHRyPEhUTUxMaW5rRWxlbWVudD4gSFRNTExp
bmtFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxMaW5rRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCAzMjEzZWJmLi45NjFj
YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTQ1LDcgKzQ1LDcg
QEAgdHlwZWRlZiBFdmVudFNlbmRlcjxIVE1MTGlua0VsZW1lbnQ+IExpbmtFdmVudFNlbmRlcjsK
IAogY2xhc3MgSFRNTExpbmtFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJs
aWMgQ2FjaGVkU3R5bGVTaGVldENsaWVudCwgcHVibGljIExpbmtMb2FkZXJDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxMaW5rRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEhUTUxMaW5rRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MTGlu
a0VsZW1lbnQoKTsKIAogICAgIFVSTCBocmVmKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1hcEVsZW1lbnQuY3BwCmluZGV4IDk3YzVmZTIuLmYwOWUxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1hcEVsZW1lbnQuY3BwCkBAIC00MSwxMiArNDEsMTIgQEAgSFRNTE1hcEVsZW1lbnQ6
OkhUTUxNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtYXBUYWcpKTsKIH0KIAotUGFzc1JlZlB0
cjxIVE1MTWFwRWxlbWVudD4gSFRNTE1hcEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCitSZWZQdHI8SFRNTE1hcEVsZW1lbnQ+IEhUTUxNYXBFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1hcEVsZW1lbnQo
bWFwVGFnLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxNYXBFbGVtZW50PiBIVE1M
TWFwRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MTWFwRWxlbWVudD4gSFRNTE1hcEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTWFwRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwogfQpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgSFRNTE1hcEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluCiAgICAgSFRN
TEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gSFRNTE1hcEVsZW1lbnQ6OmFyZWFzKCkKK1JlZlB0cjxIVE1MQ29sbGVj
dGlvbj4gSFRNTE1hcEVsZW1lbnQ6OmFyZWFzKCkKIHsKICAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
SFRNTENvbGxlY3Rpb24oTWFwQXJlYXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVu
dC5oCmluZGV4IDYxN2FhMTMuLjJiYTNiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1hcEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVt
ZW50LmgKQEAgLTMyLDggKzMyLDggQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKICAgICAKIGNs
YXNzIEhUTUxNYXBFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTWFwRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE1hcEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxNYXBFbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxNYXBFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+SFRN
TE1hcEVsZW1lbnQoKTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0TmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZTsgfQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBt
YXBNb3VzZUV2ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRTaXplJiwgSGl0
VGVzdFJlc3VsdCYpOwogICAgIAogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCgp
OwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGFyZWFzKCk7CisgICAgUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiBhcmVhcygpOwogCiBwcml2YXRlOgogICAgIEhUTUxNYXBFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWFycXVlZUVsZW1lbnQuY3BwCmluZGV4IDYwMmE2ZmIuLjExYjg2OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5l
IEhUTUxNYXJxdWVlRWxlbWVudDo6SFRNTE1hcnF1ZWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3UKICAgICBBU1NFUlQoaGFzVGFnTmFtZShtYXJxdWVlVGFnKSk7CiB9
CiAKLVBhc3NSZWZQdHI8SFRNTE1hcnF1ZWVFbGVtZW50PiBIVE1MTWFycXVlZUVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitS
ZWZQdHI8SFRNTE1hcnF1ZWVFbGVtZW50PiBIVE1MTWFycXVlZUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgUmVm
UHRyPEhUTUxNYXJxdWVlRWxlbWVudD4gbWFycXVlZUVsZW1lbnQoYWRvcHRSZWYobmV3IEhUTUxN
YXJxdWVlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpKTsKICAgICBtYXJxdWVlRWxlbWVudC0+
c3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
YXJxdWVlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQu
aAppbmRleCA0N2Y4MzFjLi41NTg0NWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNYXJxdWVlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1
ZWVFbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgUmVuZGVyTWFycXVlZTsKIAogY2xh
c3MgSFRNTE1hcnF1ZWVFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50LCBwcml2YXRl
IEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE1h
cnF1ZWVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7Cisg
ICAgc3RhdGljIFJlZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIGludCBtaW5pbXVtRGVsYXkoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuY3BwCmluZGV4IDc0ZjBiYjcuLjNiZGVj
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZW51RWxlbWVudC5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAgaW5saW5lIEhUTUxNZW51RWxlbWVudDo6SFRNTE1lbnVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JgogICAgIEFTU0VSVChoYXNUYWdOYW1lKG1lbnVU
YWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MTWVudUVsZW1lbnQ+IEhUTUxNZW51RWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkK
K1JlZlB0cjxIVE1MTWVudUVsZW1lbnQ+IEhUTUxNZW51RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhUTUxNZW51RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmgKaW5kZXggMmM3ZjA4ZmUuLjNjNWI1ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lbnVFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVudUVsZW1lbnQuaApAQCAtMjksNyArMjksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxNZW51RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE1lbnVFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGlj
IFJlZlB0cjxIVE1MTWVudUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKICAgICAKIHByaXZhdGU6CiAgICAgSFRNTE1lbnVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWV0YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQu
Y3BwCmluZGV4IGFiMTA5NjcuLmE0NTBlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRh
RWxlbWVudC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgaW5saW5lIEhUTUxNZXRhRWxlbWVudDo6SFRN
TE1ldGFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JgogICAg
IEFTU0VSVChoYXNUYWdOYW1lKG1ldGFUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MTWV0YUVs
ZW1lbnQ+IEhUTUxNZXRhRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MTWV0YUVsZW1lbnQ+IEhUTUxNZXRh
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxNZXRhRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWV0YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKaW5k
ZXggOGJlNmRkYS4uYzkxMzk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWV0YUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5o
CkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTE1ldGFF
bGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIVE1MTWV0YUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxNZXRhRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBjb250ZW50KCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBodHRwRXF1aXYoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCmluZGV4IDk0NTIx
MGUuLjE0ZGI4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcApA
QCAtNTAsNyArNTAsNyBAQCBIVE1MTWV0ZXJFbGVtZW50Ojp+SFRNTE1ldGVyRWxlbWVudCgpCiB7
CiB9CiAKLVBhc3NSZWZQdHI8SFRNTE1ldGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1Jl
ZlB0cjxIVE1MTWV0ZXJFbGVtZW50PiBIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIFJlZlB0cjxI
VE1MTWV0ZXJFbGVtZW50PiBtZXRlciA9IGFkb3B0UmVmKG5ldyBIVE1MTWV0ZXJFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KSk7CiAgICAgbWV0ZXItPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3Qo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgKaW5kZXggYTliYzk0Ni4uNTA2
ZTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgKQEAgLTMxLDcgKzMx
LDcgQEAgY2xhc3MgUmVuZGVyTWV0ZXI7CiAKIGNsYXNzIEhUTUxNZXRlckVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgTGFiZWxhYmxlRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SFRNTE1ldGVyRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTE1ldGVyRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgZW51bSBHYXVnZVJlZ2lvbiB7CiAgICAg
ICAgIEdhdWdlUmVnaW9uT3B0aW11bSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1vZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5j
cHAKaW5kZXggMmE3ZTQ3Mi4uMzg3MDRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTW9kRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTW9kRWxl
bWVudC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgaW5saW5lIEhUTUxNb2RFbGVtZW50OjpIVE1MTW9k
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG8KIHsKIH0K
IAotUGFzc1JlZlB0cjxIVE1MTW9kRWxlbWVudD4gSFRNTE1vZEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRN
TE1vZEVsZW1lbnQ+IEhUTUxNb2RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTE1vZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1vZEVsZW1lbnQuaAppbmRleCAxZmI4NjViLi5lM2MwOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTW9kRWxlbWVudC5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSFRNTE1vZEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxNb2RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MTW9kRWxlbWVu
dD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiBwcml2YXRlOgog
ICAgIEhUTUxNb2RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKaW5kZXggNmYwY2U5OC4uOGU2NTRk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCkBAIC00NCwxMiAr
NDQsMTIgQEAgSFRNTE9MaXN0RWxlbWVudDo6SFRNTE9MaXN0RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICBBU1NFUlQoaGFzVGFnTmFtZShv
bFRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxPTGlzdEVsZW1lbnQ+IEhUTUxPTGlzdEVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTE9MaXN0RWxlbWVudD4g
SFRNTE9MaXN0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxPTGlzdEVsZW1lbnQob2xUYWcsIGRvY3VtZW50KSk7CiB9CiAK
LVBhc3NSZWZQdHI8SFRNTE9MaXN0RWxlbWVudD4gSFRNTE9MaXN0RWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxI
VE1MT0xpc3RFbGVtZW50PiBIVE1MT0xpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSFRNTE9MaXN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaAppbmRleCAxZjBhYWYxLi41M2M1YWE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaApAQCAtMjksOCArMjksOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxPTGlzdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRN
TEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxPTGlzdEVsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxPTGlzdEVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEhUTUxPTGlzdEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHN0YXRp
YyBSZWZQdHI8SFRNTE9MaXN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOwogCiAgICAgaW50IHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNFeHBsaWNp
dFN0YXJ0ID8gbV9zdGFydCA6IChtX2lzUmV2ZXJzZWQgPyBpdGVtQ291bnQoKSA6IDEpOyB9CiAg
ICAgdm9pZCBzZXRTdGFydChpbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcAppbmRleCA3ZDU2NTNmLi43ODE4NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcApAQCAtNzYsNyArNzYsNyBAQCBpbmxpbmUgSFRNTE9iamVjdEVs
ZW1lbnQ6On5IVE1MT2JqZWN0RWxlbWVudCgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTE9iamVj
dEVsZW1lbnQ+IEhUTUxPYmplY3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKQorUmVmUHRyPEhUTUxPYmplY3RFbGVtZW50PiBIVE1MT2JqZWN0RWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxPYmplY3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaAppbmRleCAwMTdlNTgwLi43NDJiMzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIEhUTUxGb3JtRWxlbWVu
dDsKIAogY2xhc3MgSFRNTE9iamVjdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTFBsdWdJbklt
YWdlRWxlbWVudCwgcHVibGljIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTE9iamVjdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNl
cik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MT2JqZWN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRlZEJ5
UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MT2JqZWN0RWxlbWVudCgpOwogCiAgICAgYm9vbCBp
c0RvY05hbWVkSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jTmFtZWRJdGVtOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAppbmRleCAxZDdjYjhmLi5hYTRk
YjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgaW5saW5lIEhUTUxPcHRHcm91cEVsZW1lbnQ6OkhUTUxPcHRHcm91cEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG8KICAgICBBU1NFUlQoaGFzVGFn
TmFtZShvcHRncm91cFRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxPcHRHcm91cEVsZW1lbnQ+
IEhUTUxPcHRHcm91cEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTE9wdEdyb3VwRWxlbWVudD4gSFRNTE9w
dEdyb3VwRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxPcHRHcm91cEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
R3JvdXBFbGVtZW50LmgKaW5kZXggY2I5ZDljMC4uNWU1NWVkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgSFRNTFNl
bGVjdEVsZW1lbnQ7CiAKIGNsYXNzIEhUTUxPcHRHcm91cEVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
SFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxPcHRHcm91
cEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEhUTUxPcHRHcm91cEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRy
b2woKSBjb25zdCBvdmVycmlkZTsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogb3duZXJTZWxlY3RF
bGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
CmluZGV4IGRlZDAxMDIuLmNjODMwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwCkBAIC01NywxNyArNTcsMTcgQEAgSFRNTE9wdGlvbkVsZW1lbnQ6OkhUTUxP
cHRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2MK
ICAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKIH0KIAotUGFzc1JlZlB0
cjxIVE1MT3B0aW9uRWxlbWVudD4gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQpCitSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IEhUTUxPcHRpb25FbGVtZW50Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TE9wdGlvbkVsZW1lbnQob3B0aW9uVGFnLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhU
TUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MT3B0aW9uRWxl
bWVudD4gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1M
T3B0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxP
cHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwKK1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZUZv
ckpTQ29uc3RydWN0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNv
bnN0IFN0cmluZyYgdmFsdWUsCiAgICAgICAgIGJvb2wgZGVmYXVsdFNlbGVjdGVkLCBib29sIHNl
bGVjdGVkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SFRNTE9wdGlvbkVsZW1l
bnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgSFRNTE9wdGlvbkVsZW1lbnQob3B0aW9uVGFnLCBk
b2N1bWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCmluZGV4IDlh
NmMyMGIuLjBmODA3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgK
QEAgLTM0LDkgKzM0LDkgQEAgY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7CiAKIGNsYXNzIEhUTUxP
cHRpb25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MT3B0aW9u
RWxlbWVudD4gY3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxPcHRpb25F
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxPcHRpb25F
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3Rh
dGljIFJlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gY3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwKICAgICAgICBi
b29sIGRlZmF1bHRTZWxlY3RlZCwgYm9vbCBzZWxlY3RlZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRleHQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXggY2UzODFiNi4uMDcxZWY0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgaW5s
aW5lIEhUTUxPdXRwdXRFbGVtZW50OjpIVE1MT3V0cHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWUKIHsKIH0KIAotUGFzc1JlZlB0cjxIVE1MT3V0cHV0RWxlbWVu
dD4gSFRNTE91dHB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKK1JlZlB0cjxIVE1M
T3V0cHV0RWxlbWVudD4gSFRNTE91dHB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxPdXRwdXRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50LCBmb3JtKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
dXRwdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgK
aW5kZXggODNhOWI2NC4uOTE2ZWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3V0cHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVs
ZW1lbnQuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhU
TUxPdXRwdXRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxPdXRwdXRFbGVtZW50PiBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CisgICAg
c3RhdGljIFJlZlB0cjxIVE1MT3V0cHV0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwogCiAgICAgU3RyaW5nIHZhbHVlKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKaW5kZXggYTMyYTNjOC4uNWQ4NTY0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKQEAgLTM5
LDEyICszOSwxMiBAQCBpbmxpbmUgSFRNTFBhcmFncmFwaEVsZW1lbnQ6OkhUTUxQYXJhZ3JhcGhF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsCiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUocFRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFy
YWdyYXBoRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MUGFy
YWdyYXBoRWxlbWVudD4gSFRNTFBhcmFncmFwaEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MUGFyYWdyYXBoRWxlbWVudChw
VGFnLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBI
VE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4gSFRNTFBh
cmFncmFwaEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MUGFyYWdyYXBo
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGFyYWdyYXBoRWxlbWVudC5oCmluZGV4IDE0ZDczODEuLjE5MDk5N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKQEAgLTI5LDggKzI5LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MUGFyYWdyYXBoRWxlbWVudCBmaW5hbCA6IHB1Ymxp
YyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFBhcmFn
cmFwaEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhU
TUxQYXJhZ3JhcGhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIEhUTUxQYXJh
Z3JhcGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKaW5kZXggZDEwZjQ2Mi4uMTVjMDlkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCkBAIC0zNyw3ICszNyw3IEBA
IGlubGluZSBIVE1MUGFyYW1FbGVtZW50OjpIVE1MUGFyYW1FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUocGFyYW1UYWcp
KTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MUGFyYW1FbGVtZW50PiBIVE1MUGFyYW1FbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQor
UmVmUHRyPEhUTUxQYXJhbUVsZW1lbnQ+IEhUTUxQYXJhbUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIVE1MUGFyYW1FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5oCmluZGV4IGVkOWI0ZWIuLmJlODc5MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5oCkBAIC0yOSw3ICsyOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFBhcmFtRWxlbWVudCBmaW5hbCA6IHB1
YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFBh
cmFtRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAg
IHN0YXRpYyBSZWZQdHI8SFRNTFBhcmFtRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYpOwogCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICBTdHJpbmcg
dmFsdWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAKaW5kZXgg
Zjk5NGFlMS4uMzQyNGQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgaW5saW5lIEhUTUxQcmVFbGVtZW50OjpIVE1MUHJlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG8KIHsKIH0KIAotUGFzc1Jl
ZlB0cjxIVE1MUHJlRWxlbWVudD4gSFRNTFByZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFByZUVsZW1l
bnQ+IEhUTUxQcmVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFByZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFByZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1l
bnQuaAppbmRleCA2ODg2MDFlLi5jYWQ5YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQcmVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxl
bWVudC5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRN
TFByZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxQcmVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MUHJlRWxlbWVudD4gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIEhUTUxQ
cmVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKaW5kZXggZTdjYTY0Zi4uOGNmMmQ2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCkBAIC01MCwx
MSArNTAsMTEgQEAgSFRNTFByb2dyZXNzRWxlbWVudDo6fkhUTUxQcm9ncmVzc0VsZW1lbnQoKQog
ewogfQogCi1QYXNzUmVmUHRyPEhUTUxQcm9ncmVzc0VsZW1lbnQ+IEhUTUxQcm9ncmVzc0VsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQpCitSZWZQdHI8SFRNTFByb2dyZXNzRWxlbWVudD4gSFRNTFByb2dyZXNzRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsK
ICAgICBSZWZQdHI8SFRNTFByb2dyZXNzRWxlbWVudD4gcHJvZ3Jlc3MgPSBhZG9wdFJlZihuZXcg
SFRNTFByb2dyZXNzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogICAgIHByb2dyZXNzLT5l
bnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgcmV0dXJuIHByb2dyZXNzLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gcHJvZ3Jlc3M7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBI
VE1MUHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVz
c0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oCmlu
ZGV4IGM3ZmQ5NTUuLjM2MmZkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFByb2dyZXNzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNz
RWxlbWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91
YmxlIEluZGV0ZXJtaW5hdGVQb3NpdGlvbjsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIEludmFs
aWRQb3NpdGlvbjsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxQcm9ncmVzc0VsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEhUTUxQcm9ncmVzc0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIAogICAgIGRvdWJsZSB2YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUo
ZG91YmxlLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVs
ZW1lbnQuY3BwCmluZGV4IDU1ZjFlZjMuLmE2N2ViMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBIVE1MU2NyaXB0
RWxlbWVudDo6SFRNTFNjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc2NyaXB0VGFnKSk7CiB9CiAKLVBhc3NSZWZQ
dHI8SFRNTFNjcmlwdEVsZW1lbnQ+IEhUTUxTY3JpcHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIHdhc0luc2VydGVk
QnlQYXJzZXIsIGJvb2wgYWxyZWFkeVN0YXJ0ZWQpCitSZWZQdHI8SFRNTFNjcmlwdEVsZW1lbnQ+
IEhUTUxTY3JpcHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50LCBib29sIHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wgYWxyZWFk
eVN0YXJ0ZWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU2NyaXB0RWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCwgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYWxyZWFkeVN0YXJ0ZWQpKTsK
IH0KQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpkaXNwYXRjaExv
YWRFdmVudCgpCiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5s
b2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxT
Y3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkK
K1JlZlB0cjxFbGVtZW50PiBIVE1MU2NyaXB0RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0
dHJpYnV0ZXNBbmRDaGlsZHJlbigpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU2Ny
aXB0RWxlbWVudCh0YWdRTmFtZSgpLCBkb2N1bWVudCgpLCBmYWxzZSwgYWxyZWFkeVN0YXJ0ZWQo
KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCmluZGV4IDY4ZDk2
YTMuLmUwZWU3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MU2NyaXB0RWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIFNjcmlwdEVsZW1lbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2Vy
LCBib29sIGFscmVhZHlTdGFydGVkID0gZmFsc2UpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFNj
cmlwdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29s
IHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wgYWxyZWFkeVN0YXJ0ZWQgPSBmYWxzZSk7CiAKICAg
ICBTdHJpbmcgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIHNjcmlwdENvbnRlbnQoKTsgfQogICAgIHZv
aWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpIG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5k
Q2hpbGRyZW4oKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxFbGVtZW50PiBjbG9uZUVs
ZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8v
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4
IGNiMTViNmQuLjc5MWJiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIEhUTUxTZWxlY3RFbGVtZW50OjpIVE1MU2VsZWN0RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jCiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoc2VsZWN0VGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFNlbGVjdEVs
ZW1lbnQ+IEhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCitSZWZQdHI8
SFRNTFNlbGVjdEVsZW1lbnQ+IEhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZv
cm0pCiB7CiAgICAgQVNTRVJUKHRhZ05hbWUubWF0Y2hlcyhzZWxlY3RUYWcpKTsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxTZWxlY3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3Jt
KSk7CkBAIC0zNjgsMTIgKzM2OCwxMiBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiB2
YWxpZGF0aW9uTWVzc2FnZVNoYWRvd1RyZWVDb250YWlucyhjaGlsZCk7CiB9CiAKLVBhc3NSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IEhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RlZE9wdGlvbnMoKQor
UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRPcHRpb25z
KCkKIHsKICAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oU2VsZWN0ZWRPcHRp
b25zKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxTZWxlY3RF
bGVtZW50OjpvcHRpb25zKCkKK1JlZlB0cjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxTZWxl
Y3RFbGVtZW50OjpvcHRpb25zKCkKIHsKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE9wdGlvbnND
b2xsZWN0aW9uPihlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihTZWxlY3RPcHRpb25zKS5nZXQo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggZGMwMGRh
YS4uNGEzYmFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaApAQCAt
MzgsNyArMzgsNyBAQCBjbGFzcyBIVE1MT3B0aW9uc0NvbGxlY3Rpb247CiAKIGNsYXNzIEhUTUxT
ZWxlY3RFbGVtZW50IDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUsIHB1
YmxpYyBUeXBlQWhlYWREYXRhU291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxIVE1MU2VsZWN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIEhUTUxGb3JtRWxlbWVudCopOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFNlbGVjdEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1l
bnQqKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBzZWxlY3RlZEluZGV4KCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRTZWxlY3RlZEluZGV4KGludCk7CkBAIC02Niw4ICs2Niw4IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdmFsdWUoKSBjb25zdDsKICAgICB2b2lkIHNldFZh
bHVlKGNvbnN0IFN0cmluZyYpOwogCi0gICAgUGFzc1JlZlB0cjxIVE1MT3B0aW9uc0NvbGxlY3Rp
b24+IG9wdGlvbnMoKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBzZWxlY3RlZE9w
dGlvbnMoKTsKKyAgICBSZWZQdHI8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBvcHRpb25zKCk7Cisg
ICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBzZWxlY3RlZE9wdGlvbnMoKTsKIAogICAgIHZvaWQg
b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNvdXJjZUVsZW1lbnQuY3BwCmluZGV4IGYwYjdlNGEuLjMwZmRmOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIGlubGluZSBI
VE1MU291cmNlRWxlbWVudDo6SFRNTFNvdXJjZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc291cmNlVGFnKSk7CiB9CiAK
LVBhc3NSZWZQdHI8SFRNTFNvdXJjZUVsZW1lbnQ+IEhUTUxTb3VyY2VFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRy
PEhUTUxTb3VyY2VFbGVtZW50PiBIVE1MU291cmNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEhUTUxTb3VyY2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmgKaW5kZXggNGNhNTI4ZC4uY2YxYjVhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxTb3VyY2VFbGVtZW50IGZpbmFsIDog
cHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1M
U291cmNlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8SFRNTFNvdXJjZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIFN0cmluZyBtZWRpYSgpIGNvbnN0OwogICAgIFN0
cmluZyB0eXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
cGFuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTcGFuRWxlbWVudC5jcHAK
aW5kZXggOWVjYzIzMS4uNDQ2YjA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU3BhbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNwYW5FbGVt
ZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBIVE1MU3BhbkVsZW1lbnQ6OkhUTUxTcGFuRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbgogICAgIEFT
U0VSVChoYXNUYWdOYW1lKHNwYW5UYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MU3BhbkVsZW1l
bnQ+IEhUTUxTcGFuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCkKK1JlZlB0cjxIVE1MU3BhbkVsZW1lbnQ+IEhUTUxTcGFuRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxTcGFuRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3Bh
bkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNwYW5FbGVtZW50LmgKaW5kZXgg
NTczMzIzMy4uNDk3YmQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3Bh
bkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTcGFuRWxlbWVudC5oCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFNwYW5FbGVt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxIVE1MU3BhbkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxTcGFuRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIEhUTUxTcGFuRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTdHlsZUVsZW1lbnQuY3BwCmluZGV4IDY4MDY0OTQ5Li44ZTY5MzlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgSFRNTFN0
eWxlRWxlbWVudDo6fkhUTUxTdHlsZUVsZW1lbnQoKQogICAgIHN0eWxlTG9hZEV2ZW50U2VuZGVy
KCkuY2FuY2VsRXZlbnQoKnRoaXMpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxTdHlsZUVsZW1lbnQ+
IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQorUmVmUHRyPEhUTUxTdHls
ZUVsZW1lbnQ+IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFN0eWxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwg
Y3JlYXRlZEJ5UGFyc2VyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTdHlsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5o
CmluZGV4IDRiNTUyZTAuLmU5MWZiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN0eWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxl
bWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIHR5cGVkZWYgRXZlbnRTZW5kZXI8SFRNTFN0eWxlRWxl
bWVudD4gU3R5bGVFdmVudFNlbmRlcjsKIAogY2xhc3MgSFRNTFN0eWxlRWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TFN0eWxlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJv
b2wgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxTdHlsZUVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBh
cnNlcik7CiAgICAgdmlydHVhbCB+SFRNTFN0eWxlRWxlbWVudCgpOwogCiAgICAgQ1NTU3R5bGVT
aGVldCogc2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlU2hlZXRPd25lci5zaGVldCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5kZXggZmIzOTcz
YS4uYjA4MTFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNw
cApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBjbGFzcyBT
dW1tYXJ5Q29udGVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSW5zZXJ0aW9uUG9pbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1bW1hcnlDb250ZW50RWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxTdW1tYXJ5Q29udGVudEVsZW1lbnQ+IGNy
ZWF0ZShEb2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIFN1bW1hcnlDb250ZW50RWxlbWVudChE
b2N1bWVudCYgZG9jdW1lbnQpCkBAIC00NywxNiArNDcsMTYgQEAgcHJpdmF0ZToKICAgICB9CiB9
OwogCi1QYXNzUmVmUHRyPFN1bW1hcnlDb250ZW50RWxlbWVudD4gU3VtbWFyeUNvbnRlbnRFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPFN1bW1hcnlDb250ZW50RWxl
bWVudD4gU3VtbWFyeUNvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQog
ewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3VtbWFyeUNvbnRlbnRFbGVtZW50KGRvY3VtZW50
KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFN1bW1hcnlFbGVtZW50PiBIVE1MU3VtbWFyeUVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQpCitSZWZQdHI8SFRNTFN1bW1hcnlFbGVtZW50PiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgUmVmUHRyPEhUTUxTdW1tYXJ5RWxlbWVudD4gc3VtbWFyeSA9IGFkb3B0UmVmKG5ldyBIVE1M
U3VtbWFyeUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKICAgICBzdW1tYXJ5LT5lbnN1cmVV
c2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgcmV0dXJuIHN1bW1hcnkucmVsZWFzZSgpOworICAg
IHJldHVybiBzdW1tYXJ5OwogfQogCiBIVE1MU3VtbWFyeUVsZW1lbnQ6OkhUTUxTdW1tYXJ5RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaAppbmRleCAwZGI4YWJlLi4wZDU2
ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmgKQEAgLTI5LDcg
KzI5LDcgQEAgY2xhc3MgSFRNTERldGFpbHNFbGVtZW50OwogCiBjbGFzcyBIVE1MU3VtbWFyeUVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxTdW1tYXJ5RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFN1bW1hcnlFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgYm9vbCBpc01haW5TdW1t
YXJ5KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZl
bnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlQ2FwdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0
aW9uRWxlbWVudC5jcHAKaW5kZXggMGRkZjQxNy4uZjJlOWZmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
aW5saW5lIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50OjpIVE1MVGFibGVDYXB0aW9uRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWcKICAgICBBU1NFUlQoaGFzVGFnTmFtZShjYXB0aW9uVGFn
KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+IEhUTUxUYWJsZUNh
cHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50PiBIVE1MVGFibGVD
YXB0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZUNhcHRp
b25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmgKaW5kZXggOTA0YzMyNy4uOWRjNWQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxUYWJsZUNhcHRpb25FbGVt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToK
ICAgICBIVE1MVGFibGVDYXB0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKaW5k
ZXggMDBmNDdjZC4uN2RhNzgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgaW5saW5lIEhUTUxUYWJsZUNlbGxFbGVt
ZW50OjpIVE1MVGFibGVDZWxsRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLAog
ewogfQogCi1QYXNzUmVmUHRyPEhUTUxUYWJsZUNlbGxFbGVtZW50PiBIVE1MVGFibGVDZWxsRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCkKK1JlZlB0cjxIVE1MVGFibGVDZWxsRWxlbWVudD4gSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFibGVDZWxsRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVu
dC5oCmluZGV4IDNjZGI5YWIuLjkxMjA5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNlbGxFbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBIVE1MVGFibGVDZWxsRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MVGFibGVQYXJ0
RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFRhYmxlQ2VsbEVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEhUTUxUYWJsZUNlbGxFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKICAgICBpbnQgY2VsbEluZGV4KCkgY29uc3Q7CiAgICAgaW50IGNv
bFNwYW4oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Q29sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQu
Y3BwCmluZGV4IDlmYWM3YTguLjVhNmVhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVDb2xFbGVtZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgSFRNTFRhYmxlQ29s
RWxlbWVudDo6SFRNTFRhYmxlQ29sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEbwogewogfQogCi1QYXNzUmVmUHRyPEhUTUxUYWJsZUNvbEVsZW1lbnQ+IEhUTUxUYWJsZUNv
bEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCitSZWZQdHI8SFRNTFRhYmxlQ29sRWxlbWVudD4gSFRNTFRhYmxlQ29sRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZUNvbEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlQ29sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50
LmgKaW5kZXggMmM5NjA4NS4uMzAzZWQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDb2xFbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBIVE1MVGFibGVDb2xFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxUYWJsZVBhcnRFbGVt
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVGFibGVDb2xFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEhUTUxUYWJsZUNvbEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCiAgICAgaW50IHNwYW4oKSBjb25zdCB7IHJldHVy
biBtX3NwYW47IH0KICAgICB2b2lkIHNldFNwYW4oaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGEwNTc3MTMuLjQwMjI0ODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtNTcsMTIgKzU3LDEyIEBAIEhUTUxUYWJs
ZUVsZW1lbnQ6OkhUTUxUYWJsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodGFibGVUYWcpKTsKIH0KIAot
UGFzc1JlZlB0cjxIVE1MVGFibGVFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MVGFibGVFbGVtZW50KHRhYmxlVGFnLCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRy
PEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFRhYmxlRWxl
bWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxU
YWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KQEAgLTEyNCwxMyArMTI0LDEzIEBA
IHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6c2V0VEZvb3QoUGFzc1JlZlB0cjxIVE1MVGFibGVTZWN0
aW9uRWxlbWVudD4gbmV3Rm9vdCwgRXhjCiAgICAgaW5zZXJ0QmVmb3JlKG5ld0Zvb3QsIGNoaWxk
LCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1lbnQ6OmNy
ZWF0ZVRIZWFkKCkKK1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRl
VEhlYWQoKQogewogICAgIGlmIChIVE1MVGFibGVTZWN0aW9uRWxlbWVudCogZXhpc3RpbmdIZWFk
ID0gdEhlYWQoKSkKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nSGVhZDsKICAgICBSZWZQdHI8SFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQ+IGhlYWQgPSBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6Y3Jl
YXRlKHRoZWFkVGFnLCBkb2N1bWVudCgpKTsKICAgICBzZXRUSGVhZChoZWFkLCBJR05PUkVfRVhD
RVBUSU9OKTsKLSAgICByZXR1cm4gaGVhZC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGhlYWQ7CiB9
CiAKIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6ZGVsZXRlVEhlYWQoKQpAQCAtMTM4LDEzICsxMzgs
MTMgQEAgdm9pZCBIVE1MVGFibGVFbGVtZW50OjpkZWxldGVUSGVhZCgpCiAgICAgcmVtb3ZlQ2hp
bGQodEhlYWQoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEVsZW1l
bnQ+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVRGb290KCkKK1JlZlB0cjxIVE1MRWxlbWVudD4g
SFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlVEZvb3QoKQogewogICAgIGlmIChIVE1MVGFibGVTZWN0
aW9uRWxlbWVudCogZXhpc3RpbmdGb290ID0gdEZvb3QoKSkKICAgICAgICAgcmV0dXJuIGV4aXN0
aW5nRm9vdDsKICAgICBSZWZQdHI8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+IGZvb3QgPSBIVE1M
VGFibGVTZWN0aW9uRWxlbWVudDo6Y3JlYXRlKHRmb290VGFnLCBkb2N1bWVudCgpKTsKICAgICBz
ZXRURm9vdChmb290LCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICByZXR1cm4gZm9vdC5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIGZvb3Q7CiB9CiAKIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6ZGVsZXRl
VEZvb3QoKQpAQCAtMTUyLDIxICsxNTIsMjEgQEAgdm9pZCBIVE1MVGFibGVFbGVtZW50OjpkZWxl
dGVURm9vdCgpCiAgICAgcmVtb3ZlQ2hpbGQodEZvb3QoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9
CiAKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVRCb2R5
KCkKK1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlVEJvZHkoKQog
ewogICAgIFJlZlB0cjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4gYm9keSA9IEhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50OjpjcmVhdGUodGJvZHlUYWcsIGRvY3VtZW50KCkpOwogICAgIE5vZGUqIHJl
ZmVyZW5jZUVsZW1lbnQgPSBsYXN0Qm9keSgpID8gbGFzdEJvZHkoKS0+bmV4dFNpYmxpbmcoKSA6
IDA7CiAgICAgaW5zZXJ0QmVmb3JlKGJvZHksIHJlZmVyZW5jZUVsZW1lbnQsIEFTU0VSVF9OT19F
WENFUFRJT04pOwotICAgIHJldHVybiBib2R5LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYm9keTsK
IH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlQ2Fw
dGlvbigpCitSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZUNhcHRp
b24oKQogewogICAgIGlmIChIVE1MVGFibGVDYXB0aW9uRWxlbWVudCogZXhpc3RpbmdDYXB0aW9u
ID0gY2FwdGlvbigpKQogICAgICAgICByZXR1cm4gZXhpc3RpbmdDYXB0aW9uOwogICAgIFJlZlB0
cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4gY2FwdGlvbiA9IEhUTUxUYWJsZUNhcHRpb25FbGVt
ZW50OjpjcmVhdGUoY2FwdGlvblRhZywgZG9jdW1lbnQoKSk7CiAgICAgc2V0Q2FwdGlvbihjYXB0
aW9uLCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICByZXR1cm4gY2FwdGlvbi5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIGNhcHRpb247CiB9CiAKIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6ZGVsZXRlQ2Fw
dGlvbigpCkBAIC0xODMsNyArMTgzLDcgQEAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIEhUTUxU
YWJsZUVsZW1lbnQ6Omxhc3RCb2R5KCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
UGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVudDo6aW5zZXJ0Um93KGludCBp
bmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxUYWJsZUVs
ZW1lbnQ6Omluc2VydFJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
IChpbmRleCA8IC0xKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CkBAIC0yMjAsMTMg
KzIyMCwxMyBAQCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjppbnNl
cnRSb3coaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYwogICAgICAgICAgICAgUmVmUHRyPEhU
TUxUYWJsZVJvd0VsZW1lbnQ+IG5ld1JvdyA9IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCgpKTsKICAgICAgICAgICAgIG5ld0JvZHktPmFwcGVuZENoaWxkKG5ld1JvdywgZWMp
OwogICAgICAgICAgICAgYXBwZW5kQ2hpbGQobmV3Qm9keS5yZWxlYXNlKCksIGVjKTsKLSAgICAg
ICAgICAgIHJldHVybiBuZXdSb3cucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIG5ld1Jv
dzsKICAgICAgICAgfQogICAgIH0KIAogICAgIFJlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBu
ZXdSb3cgPSBIVE1MVGFibGVSb3dFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgcGFy
ZW50LT5pbnNlcnRCZWZvcmUobmV3Um93LCByb3cuZ2V0KCksIGVjKTsKLSAgICByZXR1cm4gbmV3
Um93LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV3Um93OwogfQogCiB2b2lkIEhUTUxUYWJsZUVs
ZW1lbnQ6OmRlbGV0ZVJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDY4LDcg
KzQ2OCw3IEBAIEhUTUxUYWJsZUVsZW1lbnQ6OkNlbGxCb3JkZXJzIEhUTUxUYWJsZUVsZW1lbnQ6
OmNlbGxCb3JkZXJzKCkgY29uc3QKICAgICByZXR1cm4gTm9Cb3JkZXJzOwogfQogCi1QYXNzUmVm
UHRyPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlU2hhcmVkQ2VsbFN0
eWxlKCkKK1JlZlB0cjxTdHlsZVByb3BlcnRpZXM+IEhUTUxUYWJsZUVsZW1lbnQ6OmNyZWF0ZVNo
YXJlZENlbGxTdHlsZSgpCiB7CiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAKQEAgLTUwNSw3ICs1MDUs
NyBAQCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gSFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRl
U2hhcmVkQ2VsbFN0eWxlKCkKICAgICBpZiAobV9wYWRkaW5nKQogICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlQYWRkaW5nLCBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZSht
X3BhZGRpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKIAotICAgIHJldHVybiBzdHls
ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHN0eWxlOwogfQogCiBjb25zdCBTdHlsZVByb3BlcnRp
ZXMqIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZGl0aW9uYWxDZWxsU3R5bGUoKQpAQCAtNTUwLDEyICs1
NTAsMTIgQEAgYm9vbCBIVE1MVGFibGVFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKICAgICByZXR1cm4gYXR0cmlidXRlLm5hbWUoKSA9PSBi
YWNrZ3JvdW5kQXR0ciB8fCBIVE1MRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKTsK
IH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlRWxlbWVudDo6cm93cygp
CitSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZUVsZW1lbnQ6OnJvd3MoKQogewogICAg
IHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihUYWJsZVJvd3MpOwogfQogCi1QYXNz
UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50Ojp0Qm9kaWVzKCkKK1JlZlB0
cjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlRWxlbWVudDo6dEJvZGllcygpCiB7CiAgICAgcmV0
dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFRhYmxlVEJvZGllcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmluZGV4IDg3M2RmMjUuLmI3ZTFhNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCkBAIC0zNyw4ICszNyw4IEBAIGNsYXNz
IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OwogCiBjbGFzcyBIVE1MVGFibGVFbGVtZW50IGZpbmFs
IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
VE1MVGFibGVFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxIVE1MVGFibGVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MVGFibGVFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50KiBj
YXB0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDYXB0aW9uKFBhc3NSZWZQdHI8SFRNTFRhYmxl
Q2FwdGlvbkVsZW1lbnQ+LCBFeGNlcHRpb25Db2RlJik7CkBAIC00OSwxOSArNDksMTkgQEAgcHVi
bGljOgogICAgIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiB0Rm9vdCgpIGNvbnN0OwogICAgIHZv
aWQgc2V0VEZvb3QoUGFzc1JlZlB0cjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4sIEV4Y2VwdGlv
bkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVRIZWFkKCk7Cisg
ICAgUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVUSGVhZCgpOwogICAgIHZvaWQgZGVsZXRlVEhl
YWQoKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVURm9vdCgpOworICAgIFJl
ZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlVEZvb3QoKTsKICAgICB2b2lkIGRlbGV0ZVRGb290KCk7
Ci0gICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlVEJvZHkoKTsKLSAgICBQYXNzUmVm
UHRyPEhUTUxFbGVtZW50PiBjcmVhdGVDYXB0aW9uKCk7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVUQm9keSgpOworICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlQ2FwdGlvbigp
OwogICAgIHZvaWQgZGVsZXRlQ2FwdGlvbigpOwotICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+
IGluc2VydFJvdyhFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gaW5zZXJ0Um93KC0xLCBlYyk7
IH0KLSAgICBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBpbnNlcnRSb3coaW50IGluZGV4LCBFeGNl
cHRpb25Db2RlJik7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBpbnNlcnRSb3coRXhjZXB0aW9u
Q29kZSYgZWMpIHsgcmV0dXJuIGluc2VydFJvdygtMSwgZWMpOyB9CisgICAgUmVmUHRyPEhUTUxF
bGVtZW50PiBpbnNlcnRSb3coaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBk
ZWxldGVSb3coaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiByb3dzKCk7Ci0gICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gdEJv
ZGllcygpOworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gcm93cygpOworICAgIFJlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gdEJvZGllcygpOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBydWxl
cygpIGNvbnN0OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3VtbWFyeSgpIGNvbnN0OwpAQCAt
ODcsNyArODcsNyBAQCBwcml2YXRlOgogCiAgICAgQ2VsbEJvcmRlcnMgY2VsbEJvcmRlcnMoKSBj
b25zdDsKIAotICAgIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxs
U3R5bGUoKTsKKyAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTaGFyZWRDZWxsU3R5
bGUoKTsKIAogICAgIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiBsYXN0Qm9keSgpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAppbmRleCA5N2Jh
YTIwLi45OTM2NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJv
d0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVu
dC5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCBIVE1MVGFibGVSb3dFbGVtZW50OjpIVE1MVGFibGVS
b3dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JgogICAgIEFT
U0VSVChoYXNUYWdOYW1lKHRyVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFRhYmxlUm93RWxl
bWVudD4gSFRNTFRhYmxlUm93RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK1Jl
ZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBIVE1MVGFibGVSb3dFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRhYmxlUm93
RWxlbWVudCh0clRhZywgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MVGFibGVSb3dF
bGVtZW50PiBIVE1MVGFibGVSb3dFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxUYWJsZVJvd0VsZW1lbnQ+
IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFi
bGVSb3dFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CkBAIC0xMTgsNyArMTE4LDcgQEAg
aW50IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OnNlY3Rpb25Sb3dJbmRleCgpIGNvbnN0CiAgICAgcmV0
dXJuIHJJbmRleDsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTFRhYmxlUm93RWxl
bWVudDo6aW5zZXJ0Q2VsbChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEhU
TUxFbGVtZW50PiBIVE1MVGFibGVSb3dFbGVtZW50OjppbnNlcnRDZWxsKGludCBpbmRleCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBjaGlsZHJlbiA9
IGNlbGxzKCk7CiAgICAgaW50IG51bUNlbGxzID0gY2hpbGRyZW4gPyBjaGlsZHJlbi0+bGVuZ3Ro
KCkgOiAwOwpAQCAtMTM4LDcgKzEzOCw3IEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxU
YWJsZVJvd0VsZW1lbnQ6Omluc2VydENlbGwoaW50IGluZGV4LCBFeGNlcHRpb25Db2RlCiAgICAg
ICAgICAgICBuID0gY2hpbGRyZW4tPml0ZW0oaW5kZXgpOwogICAgICAgICBpbnNlcnRCZWZvcmUo
Y2VsbCwgbiwgZWMpOwogICAgIH0KLSAgICByZXR1cm4gY2VsbC5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGNlbGw7CiB9CiAKIHZvaWQgSFRNTFRhYmxlUm93RWxlbWVudDo6ZGVsZXRlQ2VsbChpbnQg
aW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgSFRNTFRh
YmxlUm93RWxlbWVudDo6ZGVsZXRlQ2VsbChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiBIVE1MVGFibGVSb3dFbGVtZW50OjpjZWxscygpCitSZWZQdHI8SFRNTENvbGxlY3Rpb24+
IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKCkKIHsKICAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
SFRNTENvbGxlY3Rpb24oVFJDZWxscyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Um93RWxlbWVudC5oCmluZGV4IGM0YjBmNzcuLmQxZTJjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlUm93RWxlbWVudC5oCkBAIC0zMiw4ICszMiw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSFRNTFRhYmxlUm93RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MVGFi
bGVQYXJ0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFRhYmxl
Um93RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TFRhYmxlUm93RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFRhYmxlUm93RWxlbWVudD4gY3JlYXRlKERvY3VtZW50
Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBpbnQgcm93SW5kZXgoKSBjb25zdDsK
ICAgICB2b2lkIHNldFJvd0luZGV4KGludCk7CkBAIC00MSwxMSArNDEsMTEgQEAgcHVibGljOgog
ICAgIGludCBzZWN0aW9uUm93SW5kZXgoKSBjb25zdDsKICAgICB2b2lkIHNldFNlY3Rpb25Sb3dJ
bmRleChpbnQpOwogCi0gICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gaW5zZXJ0Q2VsbChFeGNl
cHRpb25Db2RlJiBlYykgeyByZXR1cm4gaW5zZXJ0Q2VsbCgtMSwgZWMpOyB9Ci0gICAgUGFzc1Jl
ZlB0cjxIVE1MRWxlbWVudD4gaW5zZXJ0Q2VsbChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGluc2VydENlbGwoRXhjZXB0aW9uQ29kZSYgZWMpIHsg
cmV0dXJuIGluc2VydENlbGwoLTEsIGVjKTsgfQorICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gaW5z
ZXJ0Q2VsbChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUNlbGwo
aW50IGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiBjZWxscygpOworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gY2VsbHMoKTsKICAgICB2
b2lkIHNldENlbGxzKEhUTUxDb2xsZWN0aW9uICosIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAK
aW5kZXggNDkxM2YxMi4uOTg2MGViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVTZWN0aW9uRWxlbWVudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5lIEhUTUxUYWJs
ZVNlY3Rpb25FbGVtZW50OjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWcKIHsKIH0KIAotUGFzc1JlZlB0cjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4gSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+IEhU
TUxUYWJsZVNlY3Rpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KQEAgLTU2LDcgKzU2LDcg
QEAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6YWRkaXRp
b25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVMKIAogLy8gdGhlc2UgZnVuY3Rpb25zIGFyZSByYXRo
ZXIgc2xvdywgc2luY2Ugd2UgbmVlZCB0byBnZXQgdGhlIHJvdyBhdAogLy8gdGhlIGluZGV4Li4u
IGJ1dCB0aGV5IGFyZW4ndCB1c2VkIGR1cmluZyB1c3VhbCBIVE1MIHBhcnNpbmcgYW55d2F5Ci1Q
YXNzUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6aW5zZXJ0Um93
KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50OjppbnNlcnRSb3coaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBSZWZQdHI8SFRNTFRhYmxlUm93RWxlbWVudD4gcm93OwogICAgIFJlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gY2hpbGRyZW4gPSByb3dzKCk7CkBAIC03Niw3ICs3Niw3IEBAIFBhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjppbnNlcnRSb3coaW50
IGluZGV4LCBFeGNlcHRpb25DCiAgICAgICAgICAgICBpbnNlcnRCZWZvcmUocm93LCBuLCBlYyk7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHJvdy5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IHJvdzsKIH0KIAogdm9pZCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6ZGVsZXRlUm93KGludCBp
bmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBIVE1MVGFi
bGVTZWN0aW9uRWxlbWVudDo6c2V0VkFsaWduKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAg
ICAgc2V0QXR0cmlidXRlKHZhbGlnbkF0dHIsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MoKQorUmVmUHRyPEhUTUxD
b2xsZWN0aW9uPiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cygpCiB7CiAgICAgcmV0dXJu
IGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFRTZWN0aW9uUm93cyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgKaW5kZXggNTA1Y2NkZS4uOGU3
NGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQu
aApAQCAtMzMsMTAgKzMzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTFRhYmxlUGFydEVsZW1lbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0
cjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOwogCi0gICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gaW5zZXJ0Um93KEV4Y2Vw
dGlvbkNvZGUmIGVjKSB7IHJldHVybiBpbnNlcnRSb3coLTEsIGVjKTsgfQotICAgIFBhc3NSZWZQ
dHI8SFRNTEVsZW1lbnQ+IGluc2VydFJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGluc2VydFJvdyhFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1
cm4gaW5zZXJ0Um93KC0xLCBlYyk7IH0KKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGluc2VydFJv
dyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZVJvdyhpbnQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGludCBudW1Sb3dzKCkgY29uc3Q7CkBAIC01Myw3
ICs1Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZBbGlnbigpIGNvbnN0
OwogICAgIHZvaWQgc2V0VkFsaWduKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCi0gICAgUGFzc1Jl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4gcm93cygpOworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4g
cm93cygpOwogCiBwcml2YXRlOgogICAgIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGVtcGxhdGVFbGVtZW50LmNwcAppbmRleCBmMTA4ODQ5Li4zMjBkZTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
SFRNTFRlbXBsYXRlRWxlbWVudDo6fkhUTUxUZW1wbGF0ZUVsZW1lbnQoKQogICAgICAgICBtX2Nv
bnRlbnQtPmNsZWFySG9zdCgpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+
IEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFRlbXBsYXRlRWxlbWVudD4gSFRNTFRl
bXBsYXRlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUZW1wbGF0ZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KQEAgLTY4LDcgKzY4LDcgQEAgRG9jdW1lbnRG
cmFnbWVudCogSFRNTFRlbXBsYXRlRWxlbWVudDo6Y29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fY29udGVudC5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBIVE1MVGVtcGxhdGVFbGVt
ZW50OjpjbG9uZU5vZGUoYm9vbCBkZWVwKQorUmVmUHRyPE5vZGU+IEhUTUxUZW1wbGF0ZUVsZW1l
bnQ6OmNsb25lTm9kZShib29sIGRlZXApCiB7CiAgICAgaWYgKCFkZWVwKQogICAgICAgICByZXR1
cm4gY2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRlbXBsYXRlRWxlbWVudC5oCmluZGV4IGM4MWY3YTYuLmFhMWUyMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFRl
bXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQ7CiAKIGNsYXNzIEhUTUxUZW1wbGF0ZUVsZW1l
bnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+IGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5IVE1MVGVt
cGxhdGVFbGVtZW50KCk7CiAKICAgICBEb2N1bWVudEZyYWdtZW50KiBjb250ZW50KCkgY29uc3Q7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFRlbXBsYXRlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBvdmVycmlk
ZTsKIAogICAgIG11dGFibGUgUmVmUHRyPFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQ+
IG1fY29udGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
CmluZGV4IDNlNzk3YjYuLjkxZDcxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcApAQCAtMTAxLDExICsxMDEsMTEgQEAgSFRNTFRleHRBcmVhRWxlbWVu
dDo6SFRNTFRleHRBcmVhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRydWUpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhU
TUxGb3JtRWxlbWVudCogZm9ybSkKK1JlZlB0cjxIVE1MVGV4dEFyZWFFbGVtZW50PiBIVE1MVGV4
dEFyZWFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiB7CiAgICAgUmVmUHRyPEhUTUxU
ZXh0QXJlYUVsZW1lbnQ+IHRleHRBcmVhID0gYWRvcHRSZWYobmV3IEhUTUxUZXh0QXJlYUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKICAgICB0ZXh0QXJlYS0+ZW5zdXJlVXNlckFn
ZW50U2hhZG93Um9vdCgpOwotICAgIHJldHVybiB0ZXh0QXJlYS5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHRleHRBcmVhOwogfQogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRpZEFkZFVzZXJB
Z2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmgKaW5kZXggYmVkZDBhMS4uZmM0MTY1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgVmlz
aWJsZVNlbGVjdGlvbjsKIAogY2xhc3MgSFRNTFRleHRBcmVhRWxlbWVudCBmaW5hbCA6IHB1Ymxp
YyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SFRNTFRleHRBcmVhRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFRleHRB
cmVhRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxG
b3JtRWxlbWVudCopOwogCiAgICAgaW50IGNvbHMoKSBjb25zdCB7IHJldHVybiBtX2NvbHM7IH0K
ICAgICBpbnQgcm93cygpIGNvbnN0IHsgcmV0dXJuIG1fcm93czsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKaW5kZXggOTQ4NjhkZC4uY2ZjNmUxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGlubGlu
ZSBIVE1MVGl0bGVFbGVtZW50OjpIVE1MVGl0bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodGl0bGVUYWcpKTsKIH0K
IAotUGFzc1JlZlB0cjxIVE1MVGl0bGVFbGVtZW50PiBIVE1MVGl0bGVFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRy
PEhUTUxUaXRsZUVsZW1lbnQ+IEhUTUxUaXRsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MVGl0bGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCmluZGV4IDVkZTFlYjUuLjRhZDExNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFRpdGxlRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFRpdGxlRWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRp
YyBSZWZQdHI8SFRNTFRpdGxlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOwogCiAgICAgU3RyaW5nIHRleHQoKSBjb25zdDsKICAgICB2b2lkIHNldFRleHQo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApp
bmRleCAwN2MyY2M4Li5hODRlMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUcmFja0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxl
bWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgSFRNTFRyYWNrRWxlbWVudDo6fkhUTUxUcmFja0Vs
ZW1lbnQoKQogICAgICAgICBtX3RyYWNrLT5jbGVhckNsaWVudCgpOwogfQogCi1QYXNzUmVmUHRy
PEhUTUxUcmFja0VsZW1lbnQ+IEhUTUxUcmFja0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCitSZWZQdHI8SFRNTFRyYWNrRWxl
bWVudD4gSFRNTFRyYWNrRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxU
cmFja0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmgKaW5kZXggNDQ4ODlhNS4uOTE3N2IyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxl
bWVudDsKIAogY2xhc3MgSFRNTFRyYWNrRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVu
dCwgcHVibGljIFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SFRNTFRyYWNrRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFRyYWNrRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgU3RyaW5nIGtpbmQoKTsKICAgICB2b2lk
IHNldEtpbmQoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxVTGlzdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVt
ZW50LmNwcAppbmRleCBiYzllNDBmLi5kM2E2NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFVMaXN0RWxlbWVudC5jcHAKQEAgLTM3LDEyICszNywxMiBAQCBIVE1MVUxpc3RFbGVtZW50OjpI
VE1MVUxpc3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bQogICAgIEFTU0VSVChoYXNUYWdOYW1lKHVsVGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRN
TFVMaXN0RWxlbWVudD4gSFRNTFVMaXN0RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCkKK1JlZlB0cjxIVE1MVUxpc3RFbGVtZW50PiBIVE1MVUxpc3RFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFVMaXN0RWxl
bWVudCh1bFRhZywgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MVUxpc3RFbGVtZW50
PiBIVE1MVUxpc3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPEhUTUxVTGlzdEVsZW1lbnQ+IEhUTUxVTGlzdEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVUxpc3RFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxV
TGlzdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oCmlu
ZGV4IGIyNWYwNzEuLmVmNzg5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFVMaXN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVu
dC5oCkBAIC0yOSw4ICsyOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFVM
aXN0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTFVMaXN0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTFVMaXN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWZQdHI8SFRNTFVMaXN0RWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxIVE1MVUxpc3RFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAg
SFRNTFVMaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVua25vd25FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxVbmtub3duRWxlbWVudC5oCmluZGV4IGI0YzU5MjUuLjNlM2YzMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVua25vd25FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxVbmtub3duRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTFVua25vd25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQorICAgIHN0YXRpYyBSZWZQdHI8SFRNTFVua25vd25FbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVW5rbm93bkVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcAppbmRleCA3MWIwMDUxLi44NmQ3Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTU1LDExICs1NSwxMSBAQCBpbmxpbmUgSFRNTFZpZGVv
RWxlbWVudDo6SFRNTFZpZGVvRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudAogICAgICAgICBtX2RlZmF1bHRQb3N0ZXJVUkwgPSBkb2N1bWVudC5zZXR0aW5ncygp
LT5kZWZhdWx0VmlkZW9Qb3N0ZXJVUkwoKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVt
ZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKK1JlZlB0cjxIVE1M
VmlkZW9FbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsK
ICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50KGFkb3B0UmVmKG5ldyBI
VE1MVmlkZW9FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKSk7CiAg
ICAgdmlkZW9FbGVtZW50LT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gdmlkZW9FbGVt
ZW50LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdmlkZW9FbGVtZW50OwogfQogCiBib29sIEhUTUxW
aWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggYzFiN2ZmNS4uZTVmNjA0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcg
QEAgY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogCiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50IGZpbmFs
IDogcHVibGljIEhUTUxNZWRpYUVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxWaWRlb0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmLCBib29sKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHVuc2lnbmVkIHZpZGVvV2lkdGgoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNp
Z25lZCB2aWRlb0hlaWdodCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MV0JSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50
LmNwcAppbmRleCA3MzlhNjYyLi5lOTRjYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxXQlJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJF
bGVtZW50LmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVBhc3NSZWZQdHI8SFRNTFdCUkVsZW1lbnQ+IEhUTUxX
QlJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50KQorUmVmUHRyPEhUTUxXQlJFbGVtZW50PiBIVE1MV0JSRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxXQlJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmgKaW5kZXggNzZmZmRhOC4uMjE3N2I5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxXQlJFbGVtZW50IGZpbmFsIDogcHVibGlj
IEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MV0JSRWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworICAgIHN0YXRp
YyBSZWZQdHI8SFRNTFdCUkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBIVE1MV0JSRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4
IDQwYTdiNTcuLmEzYmMxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApA
QCAtNTQsNyArNTQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogI2lmICFQTEFURk9S
TShJT1MpCiBjbGFzcyBJbWFnZUV2ZW50TGlzdGVuZXIgZmluYWwgOiBwdWJsaWMgRXZlbnRMaXN0
ZW5lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VFdmVudExpc3RlbmVy
PiBjcmVhdGUoSW1hZ2VEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
bWFnZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQpKTsgfQorICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VF
dmVudExpc3RlbmVyPiBjcmVhdGUoSW1hZ2VEb2N1bWVudCYgZG9jdW1lbnQpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbWFnZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQpKTsgfQogCiBwcml2YXRlOgog
ICAgIEltYWdlRXZlbnRMaXN0ZW5lcihJbWFnZURvY3VtZW50JiBkb2N1bWVudCkKQEAgLTcyLDcg
KzcyLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgSW1hZ2VEb2N1bWVudFBhcnNlciBmaW5hbCA6IHB1
YmxpYyBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEltYWdlRG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShJbWFnZURvY3VtZW50JiBkb2N1bWVudCkK
KyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShJbWFnZURvY3Vt
ZW50JiBkb2N1bWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VE
b2N1bWVudFBhcnNlcihkb2N1bWVudCkpOwogICAgIH0KQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0
ZToKIAogY2xhc3MgSW1hZ2VEb2N1bWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEltYWdl
RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEb2N1bWVudEVs
ZW1lbnQ+IGNyZWF0ZShJbWFnZURvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURv
Y3VtZW50RWxlbWVudD4gY3JlYXRlKEltYWdlRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICBJ
bWFnZURvY3VtZW50RWxlbWVudChJbWFnZURvY3VtZW50JiBkb2N1bWVudCkKQEAgLTEwNiw3ICsx
MDYsNyBAQCBwcml2YXRlOgogICAgIEltYWdlRG9jdW1lbnQqIG1faW1hZ2VEb2N1bWVudDsKIH07
CiAKLWlubGluZSBQYXNzUmVmUHRyPEltYWdlRG9jdW1lbnRFbGVtZW50PiBJbWFnZURvY3VtZW50
RWxlbWVudDo6Y3JlYXRlKEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KQoraW5saW5lIFJlZlB0cjxJ
bWFnZURvY3VtZW50RWxlbWVudD4gSW1hZ2VEb2N1bWVudEVsZW1lbnQ6OmNyZWF0ZShJbWFnZURv
Y3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRG9jdW1l
bnRFbGVtZW50KGRvY3VtZW50KSk7CiB9CkBAIC0yMDIsNyArMjAyLDcgQEAgSW1hZ2VEb2N1bWVu
dDo6SW1hZ2VEb2N1bWVudChGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIGxvY2tD
b21wYXRpYmlsaXR5TW9kZSgpOwogfQogICAgIAotUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4g
SW1hZ2VEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKK1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gSW1h
Z2VEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKIHsKICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudFBh
cnNlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgKaW5k
ZXggZTFlOWRlMi4uNzFkNWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgKQEAg
LTM0LDcgKzM0LDcgQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIAogY2xhc3MgSW1hZ2VEb2N1
bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEltYWdlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYg
dXJsKQorICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEb2N1bWVudD4gY3JlYXRlKEZyYW1lJiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElt
YWdlRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBJbWFnZURvY3VtZW50KEZyYW1lJiwgY29uc3QgVVJMJik7CiAKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBv
dmVycmlkZTsKIAogICAgIExheW91dFNpemUgaW1hZ2VTaXplKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuY3BwCmluZGV4IGQyYzdhNWYuLjQxYTM3MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogLy8gRklYTUU6IFNoYXJlIG1vcmUgY29kZSB3aXRoIFBsdWdpbkRvY3VtZW50
UGFyc2VyLgogY2xhc3MgTWVkaWFEb2N1bWVudFBhcnNlciBmaW5hbCA6IHB1YmxpYyBSYXdEYXRh
RG9jdW1lbnRQYXJzZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhRG9j
dW1lbnRQYXJzZXI+IGNyZWF0ZShNZWRpYURvY3VtZW50JiBkb2N1bWVudCkKKyAgICBzdGF0aWMg
UmVmUHRyPE1lZGlhRG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShNZWRpYURvY3VtZW50JiBkb2N1bWVu
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFEb2N1bWVudFBhcnNl
cihkb2N1bWVudCkpOwogICAgIH0KQEAgLTE1Myw3ICsxNTMsNyBAQCBNZWRpYURvY3VtZW50Ojp+
TWVkaWFEb2N1bWVudCgpCiAgICAgQVNTRVJUKCFtX3JlcGxhY2VNZWRpYUVsZW1lbnRUaW1lci5p
c0FjdGl2ZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gTWVkaWFEb2N1bWVu
dDo6Y3JlYXRlUGFyc2VyKCkKK1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gTWVkaWFEb2N1bWVudDo6
Y3JlYXRlUGFyc2VyKCkKIHsKICAgICByZXR1cm4gTWVkaWFEb2N1bWVudFBhcnNlcjo6Y3JlYXRl
KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmgKaW5kZXggOWQ3MWNlMi4u
OTE3OTg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmgKQEAgLTM0LDcgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYURvY3VtZW50IGZpbmFsIDogcHVi
bGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFE
b2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCisgICAgc3RhdGlj
IFJlZlB0cjxNZWRpYURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVy
bCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFEb2N1bWVudChmcmFt
ZSwgdXJsKSk7CiAgICAgfQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IE1lZGlhRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAppbmRleCBlZDBmNjIyLi43N2UxNGNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogLy8gRklYTUU6IFNoYXJlIG1vcmUgY29kZSB3aXRo
IE1lZGlhRG9jdW1lbnRQYXJzZXIuCiBjbGFzcyBQbHVnaW5Eb2N1bWVudFBhcnNlciBmaW5hbCA6
IHB1YmxpYyBSYXdEYXRhRG9jdW1lbnRQYXJzZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBsdWdpbkRvY3VtZW50UGFyc2VyPiBjcmVhdGUoUGx1Z2luRG9jdW1lbnQmIGRvY3Vt
ZW50KQorICAgIHN0YXRpYyBSZWZQdHI8UGx1Z2luRG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShQbHVn
aW5Eb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFBsdWdpbkRvY3VtZW50UGFyc2VyKGRvY3VtZW50KSk7CiAgICAgfQpAQCAtMTQ4LDcgKzE0OCw3
IEBAIFBsdWdpbkRvY3VtZW50OjpQbHVnaW5Eb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVS
TCYgdXJsKQogICAgIGxvY2tDb21wYXRpYmlsaXR5TW9kZSgpOwogfQogCi1QYXNzUmVmUHRyPERv
Y3VtZW50UGFyc2VyPiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKK1JlZlB0cjxEb2N1
bWVudFBhcnNlcj4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7CiAgICAgcmV0dXJu
IFBsdWdpbkRvY3VtZW50UGFyc2VyOjpjcmVhdGUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Q
bHVnaW5Eb2N1bWVudC5oCmluZGV4IDZmYzZlYmMuLmEyODFkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BsdWdpbkRvY3VtZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgV2lkZ2V0OwogCiBjbGFz
cyBQbHVnaW5Eb2N1bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkRvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVmUHRyPFBsdWdpbkRvY3VtZW50PiBjcmVh
dGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUGx1Z2luRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQbHVnaW5Eb2N1bWVudChGcmFtZSosIGNv
bnN0IFVSTCYpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVh
dGVQYXJzZXIoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxEb2N1bWVudFBhcnNlcj4g
Y3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFNob3VsZExvYWRQbHVnaW5N
YW51YWxseShib29sIGxvYWRNYW51YWxseSkgeyBtX3Nob3VsZExvYWRQbHVnaW5NYW51YWxseSA9
IGxvYWRNYW51YWxseTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5jcHAKaW5kZXgg
NDdiNjljNy4uNjZiMGY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmNwcApAQCAt
MzYsNyArMzYsNyBAQCBUZXh0RG9jdW1lbnQ6OlRleHREb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgdXJsKQogICAgIGxvY2tDb21wYXRpYmlsaXR5TW9kZSgpOwogfQogCi1QYXNzUmVm
UHRyPERvY3VtZW50UGFyc2VyPiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCitSZWZQdHI8
RG9jdW1lbnRQYXJzZXI+IFRleHREb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKIHsKICAgICByZXR1
cm4gVGV4dERvY3VtZW50UGFyc2VyOjpjcmVhdGUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dERvY3VtZW50LmgKaW5kZXggNThlMDU1Ny4uYTVkMjdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRE
b2N1bWVudC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
VGV4dERvY3VtZW50IGZpbmFsIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8VGV4dERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25z
dCBVUkwmIHVybCkKKyAgICBzdGF0aWMgUmVmUHRyPFRleHREb2N1bWVudD4gY3JlYXRlKEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFRleHREb2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQpAQCAtMzksNyArMzksNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFRleHREb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwog
ICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2Vy
KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBh
cnNlcigpIG92ZXJyaWRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCA4OWQ0NDk2Li45MWFkYzNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtNjIsNyAr
NjIsNyBAQCBjbGFzcyBQdW1wU2Vzc2lvbjsKIGNsYXNzIEhUTUxEb2N1bWVudFBhcnNlciA6ICBw
dWJsaWMgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLCBIVE1MU2NyaXB0UnVubmVySG9zdCwgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gY3JlYXRlKEhUTUxE
b2N1bWVudCYgZG9jdW1lbnQpCisgICAgc3RhdGljIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+
IGNyZWF0ZShIVE1MRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIVE1MRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpKTsKICAgICB9CkBAIC05Myw3
ICs5Myw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZvcmNlUGxhaW50ZXh0Rm9yVGV4dERvY3Vt
ZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50UGFy
c2VyPiBjcmVhdGUoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRF
bGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCisgICAgc3Rh
dGljIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShEb2N1bWVudEZyYWdtZW50JiBm
cmFnbWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFy
c2VyQ29udGVudFBvbGljeSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TERvY3VtZW50UGFyc2VyKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBv
bGljeSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxTdGFja0l0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0u
aAppbmRleCAzNzAxMzU0Li4zZDk1NTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFN0YWNrSXRlbS5oCkBAIC00OCwxMyArNDgsMTMgQEAgcHVibGljOgogICAgIH07CiAKICAg
ICAvLyBVc2VkIGJ5IGRvY3VtZW50IGZyYWdtZW50IG5vZGUgYW5kIGNvbnRleHQgZWxlbWVudC4K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MU3RhY2tJdGVtPiBjcmVhdGUoUGFzc1JlZlB0cjxD
b250YWluZXJOb2RlPiBub2RlLCBJdGVtVHlwZSB0eXBlKQorICAgIHN0YXRpYyBSZWZQdHI8SFRN
TFN0YWNrSXRlbT4gY3JlYXRlKFBhc3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gbm9kZSwgSXRlbVR5
cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFN0YWNrSXRl
bShub2RlLCB0eXBlKSk7CiAgICAgfQogCiAgICAgLy8gVXNlZCBieSBIVE1MRWxlbWVudFN0YWNr
IGFuZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhU
TUxTdGFja0l0ZW0+IGNyZWF0ZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IG5vZGUsIEF0b21p
Y0hUTUxUb2tlbiogdG9rZW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJID0gSFRN
TE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSkKKyAgICBzdGF0aWMgUmVmUHRyPEhUTUxTdGFja0l0
ZW0+IGNyZWF0ZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IG5vZGUsIEF0b21pY0hUTUxUb2tl
biogdG9rZW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJID0gSFRNTE5hbWVzOjp4
aHRtbE5hbWVzcGFjZVVSSSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TFN0YWNrSXRlbShub2RlLCB0b2tlbiwgbmFtZXNwYWNlVVJJKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggZjlj
ZWQ2ZC4uNDgzZmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC01OTgsNyArNTk4LDcgQEAgY29uc3QgQXRvbWljU3RyaW5n
JiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKICAgICB9CiB9CiAK
LVBhc3NSZWZQdHI8RWxlbWVudD4gU2xpZGVyVGh1bWJFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRo
b3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKK1JlZlB0cjxFbGVtZW50PiBTbGlkZXJUaHVtYkVs
ZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQogewogICAg
IHJldHVybiBjcmVhdGUoZG9jdW1lbnQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4IGEwNGEwNTcuLmYzZWVkMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCkBAIC02
Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgU2xpZGVyVGh1bWJFbGVtZW50KERvY3VtZW50Jik7
CiAKICAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91
dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgbWF0
Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBF
bGVtZW50KiBmb2N1c0RlbGVnYXRlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAzMjJh
YmViLi5jNzI3ZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgUGFzc1JlZlB0
cjxUZXh0Q29udHJvbElubmVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCYgZG8KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRDb250cm9sSW5uZXJF
bGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFRleHRDb250
cm9sSW5uZXJFbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJikKK1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9y
UmVuZGVyZXIoUmVuZGVyU3R5bGUmKQogewogICAgIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZSYgcGFyZW50UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU+
KCpzaGFkb3dIb3N0KCktPnJlbmRlcmVyKCkpOwogICAgIHJldHVybiBwYXJlbnRSZW5kZXJlci5j
cmVhdGVJbm5lckJsb2NrU3R5bGUoJnBhcmVudFJlbmRlcmVyLnN0eWxlKCkpOwpAQCAtMTIwLDcg
KzEyMCw3IEBAIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayogVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OjpyZW5kZXJlcigpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRl
eHRDb250cm9sSW5uZXJCbG9jaz4oSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVyKCkpOwogfQogCi1Q
YXNzUmVmUHRyPFJlbmRlclN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmN1c3Rv
bVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmKQorUmVmUHRyPFJlbmRlclN0eWxlPiBUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5
bGUmKQogewogICAgIFJlbmRlclRleHRDb250cm9sJiBwYXJlbnRSZW5kZXJlciA9IGRvd25jYXN0
PFJlbmRlclRleHRDb250cm9sPigqc2hhZG93SG9zdCgpLT5yZW5kZXJlcigpKTsKICAgICByZXR1
cm4gcGFyZW50UmVuZGVyZXIuY3JlYXRlSW5uZXJUZXh0U3R5bGUoJnBhcmVudFJlbmRlcmVyLnN0
eWxlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuaAppbmRleCBjMzEyOGI4Li5kMzljZGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaApAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBUZXh0Q29udHJvbElubmVy
RWxlbWVudChEb2N1bWVudCYpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVy
KFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudChEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZv
clJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUm
IHBhcmVudFN0eWxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJs
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCmlu
ZGV4IGQ3NGI4MzguLmE5NDc5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRFbGVtZW50LmNwcApAQCAtODAsNyArODAsNyBAQCBQYXNzUmVmUHRyPFdlYlZUVEVsZW1lbnQ+
IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShXZWJWVFROb2RlVHlwZSBub2RlVHlwZSwgRG9jdW1lbgog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVlRURWxlbWVudChub2RlVHlwZSwgZG9jdW1lbnQp
KTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBXZWJWVFRFbGVtZW50OjpjbG9uZUVsZW1lbnRX
aXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKK1JlZlB0cjxFbGVtZW50PiBXZWJWVFRFbGVt
ZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKIHsKICAgICBS
ZWZQdHI8V2ViVlRURWxlbWVudD4gY2xvbmUgPSBjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViVlRUTm9k
ZVR5cGU+KG1fd2ViVlRUTm9kZVR5cGUpLCBkb2N1bWVudCgpKTsKICAgICBjbG9uZS0+c2V0TGFu
Z3VhZ2UobV9sYW5ndWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5oCmluZGV4IDUyYWU0ODcuLjQyYTc1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
V2ViVlRURWxlbWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJWVFRFbGVtZW50PiBjcmVhdGUoY29uc3QgV2ViVlRUTm9kZVR5cGUsIERvY3Vt
ZW50Jik7CiAgICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlRXF1aXZhbGVudEhUTUxF
bGVtZW50KERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xv
bmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hp
bGRyZW4oKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0V2ViVlRUTm9kZVR5cGUoV2ViVlRUTm9k
ZVR5cGUgdHlwZSkgeyBtX3dlYlZUVE5vZGVUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5
cGUpOyB9CiAgICAgV2ViVlRUTm9kZVR5cGUgd2ViVlRUTm9kZVR5cGUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxXZWJWVFROb2RlVHlwZT4obV93ZWJWVFROb2RlVHlwZSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKaW5kZXggNmM1NTAzMi4uZmM0YmIzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaW5rRG9jdW1lbnRQYXJzZXIgZmluYWwgOiBwdWJs
aWMgUmF3RGF0YURvY3VtZW50UGFyc2VyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTaW5rRG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShTaW5rRG9jdW1lbnQmIGRvY3VtZW50KQorICAg
IHN0YXRpYyBSZWZQdHI8U2lua0RvY3VtZW50UGFyc2VyPiBjcmVhdGUoU2lua0RvY3VtZW50JiBk
b2N1bWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2lua0RvY3VtZW50
UGFyc2VyKGRvY3VtZW50KSk7CiAgICAgfQpAQCAtNTYsNyArNTYsNyBAQCBTaW5rRG9jdW1lbnQ6
OlNpbmtEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIGxvY2tDb21w
YXRpYmlsaXR5TW9kZSgpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBTaW5rRG9j
dW1lbnQ6OmNyZWF0ZVBhcnNlcigpCitSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IFNpbmtEb2N1bWVu
dDo6Y3JlYXRlUGFyc2VyKCkKIHsKICAgICByZXR1cm4gU2lua0RvY3VtZW50UGFyc2VyOjpjcmVh
dGUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5oCmluZGV4IGNhMWU3
OTAuLmM3ODFmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmgKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaW5rRG9jdW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
aW5rRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0
YXRpYyBSZWZQdHI8U2lua0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2lua0RvY3VtZW50KGZy
YW1lLCB1cmwpKTsKICAgICB9CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgU2lua0RvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CiAgICAgCi0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiB9OwogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAppbmRleCAyMjllMGVhLi41YmJiOWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIE1hdGhN
TEVsZW1lbnQ6Ok1hdGhNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50KQogewogfQogICAgIAotUGFzc1JlZlB0cjxNYXRoTUxFbGVtZW50PiBN
YXRoTUxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50KQorUmVmUHRyPE1hdGhNTEVsZW1lbnQ+IE1hdGhNTEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRoTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCBiOThmYmViLi4xOWJk
NTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNYXRoTUxFbGVtZW50IDogcHVibGljIFN0
eWxlZEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1hdGhNTEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOworICAg
IHN0YXRpYyBSZWZQdHI8TWF0aE1MRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50Jik7CiAKICAgICBpbnQgY29sU3BhbigpIGNvbnN0OwogICAgIGlu
dCByb3dTcGFuKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAppbmRleCAzYjkw
ZDNjLi4wZGVhMDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKQEAgLTc2LDcgKzc2
LDcgQEAgdm9pZCBTVkdEb2N1bWVudDo6dXBkYXRlUGFuKGNvbnN0IEZsb2F0UG9pbnQmIHBvcykg
Y29uc3QKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+IFNWR0RvY3VtZW50OjpjbG9u
ZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QKK1JlZlB0cjxEb2N1bWVudD4gU1ZHRG9j
dW1lbnQ6OmNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdAogewogICAgIHJldHVy
biBjcmVhdGUobnVsbHB0ciwgdXJsKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAppbmRl
eCBlZjViZTJlLi5mZjUxZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaApAQCAtMzIsNyAr
MzIsNyBAQCBjbGFzcyBTVkdTVkdFbGVtZW50OwogCiBjbGFzcyBTVkdEb2N1bWVudCBmaW5hbCA6
IHB1YmxpYyBEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRG9j
dW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorICAgIHN0YXRpYyBS
ZWZQdHI8U1ZHRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdEb2N1bWVudChmcmFtZSwgdXJs
KSk7CiAgICAgfQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0Rv
Y3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9j
dW1lbnQ+IGNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxEb2N1bWVudD4gY2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbigp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRmxvYXRQb2ludCBtX3RyYW5zbGF0ZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggMTU3NDc1YS4uY2MwZjk1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcApAQCAtNzg0LDcgKzc4NCw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6c3lu
Y2hyb25pemVTeXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKICAgICBj
b250ZXh0RWxlbWVudC0+c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpOwogfQogCi1QYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBTVkdFbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSkKK1JlZlB0cjxSZW5kZXJTdHlsZT4gU1ZHRWxlbWVudDo6Y3Vz
dG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCiB7CiAgICAgaWYg
KCFjb3JyZXNwb25kaW5nRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5lbnN1
cmVTdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KHRoaXMsICZwYXJlbnRTdHlsZSk7CkBA
IC0xMTAxLDcgKzExMDEsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25z
dCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6aW52YWxpZGF0
ZUFsbEluc3RhbmNlc09mRWxlbWVudCh0aGlzKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
U1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkK
K1JlZlB0cjxDU1NWYWx1ZT4gU1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIWhhc0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRl
KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggNzM0MjVh
MS4uM2IyNDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0FuaW1hdGFibGVDU1NQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVdpdGhTVkdET00o
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBnZXRQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhh
c1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IHsgcmV0dXJuICFtX2VsZW1lbnRzV2l0aFJlbGF0aXZl
TGVuZ3Rocy5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3Vy
Y2VIYW5kbGluZygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTExNyw3ICsxMTcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzeW5jaHJvbml6ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZUFsbEFuaW1h
dGVkU1ZHQXR0cmlidXRlKFNWR0VsZW1lbnQqKTsKICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0
eWxlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5
bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpIG92ZXJyaWRlOwogCiAgICAg
c3RhdGljIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KTsKICAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcAppbmRleCA2YjMwYTY1Li5hMDU5ZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
RWxlbWVudC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgaW5saW5lIFNWR1BhdGhFbGVtZW50OjpTVkdQ
YXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG8KICAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1BhdGhFbGVtZW50KCk7CiB9CiAKLVBh
c3NSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorUmVmUHRyPFNWR1BhdGhF
bGVtZW50PiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1Bh
dGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CkBAIC0xMTcsOTcgKzExNyw5NyBAQCB1
bnNpZ25lZCBTVkdQYXRoRWxlbWVudDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKGZsb2F0IGxlbmd0aCkK
ICAgICByZXR1cm4gcGF0aFNlZzsKIH0KIAotUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ2xvc2VQYXRo
PiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aChTVkdQYXRoU2VnUm9s
ZSByb2xlKQorUmVmUHRyPFNWR1BhdGhTZWdDbG9zZVBhdGg+IFNWR1BhdGhFbGVtZW50OjpjcmVh
dGVTVkdQYXRoU2VnQ2xvc2VQYXRoKFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7CiAgICAgcmV0dXJu
IFNWR1BhdGhTZWdDbG9zZVBhdGg6OmNyZWF0ZSh0aGlzLCByb2xlKTsKIH0KIAotUGFzc1JlZlB0
cjxTVkdQYXRoU2VnTW92ZXRvQWJzPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ01v
dmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlKQorUmVmUHRyPFNW
R1BhdGhTZWdNb3ZldG9BYnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTW92ZXRv
QWJzKGZsb2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7CiAgICAgcmV0dXJu
IFNWR1BhdGhTZWdNb3ZldG9BYnM6OmNyZWF0ZSh0aGlzLCByb2xlLCB4LCB5KTsKIH0KIAotUGFz
c1JlZlB0cjxTVkdQYXRoU2VnTW92ZXRvUmVsPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0
aFNlZ01vdmV0b1JlbChmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlKQorUmVm
UHRyPFNWR1BhdGhTZWdNb3ZldG9SZWw+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2Vn
TW92ZXRvUmVsKGZsb2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7CiAgICAg
cmV0dXJuIFNWR1BhdGhTZWdNb3ZldG9SZWw6OmNyZWF0ZSh0aGlzLCByb2xlLCB4LCB5KTsKIH0K
IAotUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGluZXRvQWJzPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRl
U1ZHUGF0aFNlZ0xpbmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xl
KQorUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9BYnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQ
YXRoU2VnTGluZXRvQWJzKGZsb2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7
CiAgICAgcmV0dXJuIFNWR1BhdGhTZWdMaW5ldG9BYnM6OmNyZWF0ZSh0aGlzLCByb2xlLCB4LCB5
KTsKIH0KIAotUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGluZXRvUmVsPiBTVkdQYXRoRWxlbWVudDo6
Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbChmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9s
ZSByb2xlKQorUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9SZWw+IFNWR1BhdGhFbGVtZW50OjpjcmVh
dGVTVkdQYXRoU2VnTGluZXRvUmVsKGZsb2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJv
bGUpCiB7CiAgICAgcmV0dXJuIFNWR1BhdGhTZWdMaW5ldG9SZWw6OmNyZWF0ZSh0aGlzLCByb2xl
LCB4LCB5KTsKIH0KIAotUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzPiBTVkdQ
YXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyhmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1Jv
bGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzPiBTVkdQYXRoRWxlbWVu
dDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkK
IHsKICAgICByZXR1cm4gU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficzo6Y3JlYXRlKHRoaXMsIHJv
bGUsIHgsIHksIHgxLCB5MSwgeDIsIHkyKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljUmVsPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJp
Y1JlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9h
dCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
UmVsPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbChmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZH
UGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4gU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Jl
bDo6Y3JlYXRlKHRoaXMsIHJvbGUsIHgsIHksIHgxLCB5MSwgeDIsIHkyKTsKIH0KIAotUGFzc1Jl
ZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0
ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgx
LCBmbG9hdCB5MSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0
b1F1YWRyYXRpY0Ficz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVh
ZHJhdGljQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwgU1ZHUGF0aFNl
Z1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4gU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnM6
OmNyZWF0ZSh0aGlzLCByb2xlLCB4LCB5LCB4MSwgeTEpOwogfQogCi1QYXNzUmVmUHRyPFNWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkx
LCBTVkdQYXRoU2VnUm9sZSByb2xlKQorUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
UmVsPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBTVkdQYXRoU2VnUm9sZSByb2xl
KQogewogICAgIHJldHVybiBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbDo6Y3JlYXRlKHRo
aXMsIHJvbGUsIHgsIHksIHgxLCB5MSk7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0FyY0Fi
cz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMoZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJv
b2wgc3dlZXBGbGFnLCBTVkdQYXRoU2VnUm9sZSByb2xlKQorUmVmUHRyPFNWR1BhdGhTZWdBcmNB
YnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQXJjQWJzKGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBi
b29sIHN3ZWVwRmxhZywgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4gU1ZHUGF0
aFNlZ0FyY0Ficzo6Y3JlYXRlKHRoaXMsIHJvbGUsIHgsIHksIHIxLCByMiwgYW5nbGUsIGxhcmdl
QXJjRmxhZywgc3dlZXBGbGFnKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdQYXRoU2VnQXJjUmVsPiBT
VkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbChmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBz
d2VlcEZsYWcsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNlZ0FyY1JlbD4g
U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdBcmNSZWwoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wg
c3dlZXBGbGFnLCBTVkdQYXRoU2VnUm9sZSByb2xlKQogewogICAgIHJldHVybiBTVkdQYXRoU2Vn
QXJjUmVsOjpjcmVhdGUodGhpcywgcm9sZSwgeCwgeSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNG
bGFnLCBzd2VlcEZsYWcpOwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9u
dGFsQWJzPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxB
YnMoZmxvYXQgeCwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2VnTGluZXRv
SG9yaXpvbnRhbEFicz4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jp
em9udGFsQWJzKGZsb2F0IHgsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7CiAgICAgcmV0dXJuIFNW
R1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzOjpjcmVhdGUodGhpcywgcm9sZSwgeCk7CiB9CiAK
LVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWw+IFNWR1BhdGhFbGVtZW50
OjpjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbChmbG9hdCB4LCBTVkdQYXRoU2Vn
Um9sZSByb2xlKQorUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsPiBTVkdQYXRo
RWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwoZmxvYXQgeCwgU1ZH
UGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1cm4gU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250
YWxSZWw6OmNyZWF0ZSh0aGlzLCByb2xlLCB4KTsKIH0KIAotUGFzc1JlZlB0cjxTVkdQYXRoU2Vn
TGluZXRvVmVydGljYWxBYnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTGluZXRv
VmVydGljYWxBYnMoZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRo
U2VnTGluZXRvVmVydGljYWxBYnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnTGlu
ZXRvVmVydGljYWxBYnMoZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKIHsKICAgICByZXR1
cm4gU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzOjpjcmVhdGUodGhpcywgcm9sZSwgeSk7CiB9
CiAKLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsPiBTVkdQYXRoRWxlbWVu
dDo6Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsKGZsb2F0IHksIFNWR1BhdGhTZWdS
b2xlIHJvbGUpCitSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsPiBTVkdQYXRoRWxl
bWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsKGZsb2F0IHksIFNWR1BhdGhT
ZWdSb2xlIHJvbGUpCiB7CiAgICAgcmV0dXJuIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbDo6
Y3JlYXRlKHRoaXMsIHJvbGUsIHkpOwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRv
Q3ViaWNTbW9vdGhBYnM+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1
YmljU21vb3RoQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0
aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzPiBT
VkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyhmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB4MiwgZmxvYXQgeTIsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7
CiAgICAgcmV0dXJuIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnM6OmNyZWF0ZSh0aGlz
LCByb2xlLCB4LCB5LCB4MiwgeTIpOwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRv
Q3ViaWNTbW9vdGhSZWw+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1
YmljU21vb3RoUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0
aFNlZ1JvbGUgcm9sZSkKK1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsPiBT
VkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbChmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB4MiwgZmxvYXQgeTIsIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7
CiAgICAgcmV0dXJuIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw6OmNyZWF0ZSh0aGlz
LCByb2xlLCB4LCB5LCB4MiwgeTIpOwogfQogCi1QYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljU21vb3RoQWJzPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNTbW9vdGhBYnMoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9s
ZSkKK1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicz4gU1ZHUGF0aEVs
ZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKGZsb2F0IHgs
IGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUpCiB7CiAgICAgcmV0dXJuIFNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzOjpjcmVhdGUodGhpcywgcm9sZSwgeCwgeSk7CiB9CiAK
LVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWw+IFNWR1BhdGhF
bGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbChmbG9hdCB4
LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlKQorUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljU21vb3RoUmVsPiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNTbW9vdGhSZWwoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9s
ZSkKIHsKICAgICByZXR1cm4gU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWw6OmNy
ZWF0ZSh0aGlzLCByb2xlLCB4LCB5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgK
aW5kZXggYjY0YjRjNS4uNzViMTZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgK
QEAgLTU1LDMxICs1NSwzMSBAQCBjbGFzcyBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZjsK
IGNsYXNzIFNWR1BhdGhFbGVtZW50IGZpbmFsIDogcHVibGljIFNWR0dyYXBoaWNzRWxlbWVudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJl
ZlB0cjxTVkdQYXRoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogICAgIAogICAgIGZsb2F0IGdldFRvdGFsTGVuZ3RoKCk7CiAgICAgU1ZHUG9pbnQgZ2V0
UG9pbnRBdExlbmd0aChmbG9hdCBkaXN0YW5jZSk7CiAgICAgdW5zaWduZWQgZ2V0UGF0aFNlZ0F0
TGVuZ3RoKGZsb2F0IGRpc3RhbmNlKTsKIAotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0Nsb3Nl
UGF0aD4gY3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aChTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0
aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ01vdmV0b0Ficz4g
Y3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9s
ZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNl
Z01vdmV0b1JlbD4gY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b1JlbChmbG9hdCB4LCBmbG9hdCB5LCBT
VkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQ
dHI8U1ZHUGF0aFNlZ0xpbmV0b0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0FicyhmbG9hdCB4
LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwot
ICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b1JlbD4gY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0
b1JlbChmbG9hdCB4LCBmbG9hdCB5LCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVm
aW5lZFJvbGUpOwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficz4gY3Jl
YXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwg
ZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhT
ZWdVbmRlZmluZWRSb2xlKTsKLSAgICBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNS
ZWw+IGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQgeTIsIFNWR1BhdGhTZWdSb2xlIHJvbGUg
PSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0
b1F1YWRyYXRpY0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0
aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFk
cmF0aWNSZWw+IGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdV
bmRlZmluZWRSb2xlKTsKLSAgICBQYXNzUmVmUHRyPFNWR1BhdGhTZWdBcmNBYnM+IGNyZWF0ZVNW
R1BhdGhTZWdBcmNBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9h
dCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnLCBTVkdQYXRoU2VnUm9s
ZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNl
Z0FyY1JlbD4gY3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBy
MSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZs
YWcsIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgUGFz
c1JlZlB0cjxTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicz4gY3JlYXRlU1ZHUGF0aFNlZ0xp
bmV0b0hvcml6b250YWxBYnMoZmxvYXQgeCwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdV
bmRlZmluZWRSb2xlKTsKLSAgICBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFs
UmVsPiBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbChmbG9hdCB4LCBTVkdQYXRo
U2VnUm9sZSByb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQdHI8U1ZH
UGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzPiBjcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxB
YnMoZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsK
LSAgICBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbD4gY3JlYXRlU1ZHUGF0
aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsKGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRo
U2VnVW5kZWZpbmVkUm9sZSk7Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
U21vb3RoQWJzPiBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhT
ZWdVbmRlZmluZWRSb2xlKTsKLSAgICBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNT
bW9vdGhSZWw+IGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSByb2xlID0gUGF0aFNl
Z1VuZGVmaW5lZFJvbGUpOwotICAgIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0
aWNTbW9vdGhBYnM+IGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKGZs
b2F0IHgsIGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlIHJvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9s
ZSk7Ci0gICAgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbD4g
Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwoZmxvYXQgeCwgZmxvYXQg
eSwgU1ZHUGF0aFNlZ1JvbGUgcm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQ
dHI8U1ZHUGF0aFNlZ0Nsb3NlUGF0aD4gY3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aChTVkdQYXRo
U2VnUm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ01v
dmV0b0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5LCBTVkdQ
YXRoU2VnUm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNl
Z01vdmV0b1JlbD4gY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b1JlbChmbG9hdCB4LCBmbG9hdCB5LCBT
VkdQYXRoU2VnUm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0
aFNlZ0xpbmV0b0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5
LCBTVkdQYXRoU2VnUm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZH
UGF0aFNlZ0xpbmV0b1JlbD4gY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbChmbG9hdCB4LCBmbG9h
dCB5LCBTVkdQYXRoU2VnUm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Fi
cyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9hdCB5
MiwgU1ZHUGF0aFNlZ1JvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAgUmVmUHRyPFNW
R1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw+IGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQgeTIs
IFNWR1BhdGhTZWdSb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIFJlZlB0cjxTVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0
aWNBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBTVkdQYXRoU2VnUm9s
ZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNSZWw+IGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwgU1ZHUGF0aFNlZ1JvbGUgPSBQYXRoU2VnVW5k
ZWZpbmVkUm9sZSk7CisgICAgUmVmUHRyPFNWR1BhdGhTZWdBcmNBYnM+IGNyZWF0ZVNWR1BhdGhT
ZWdBcmNBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmds
ZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnLCBTVkdQYXRoU2VnUm9sZSA9IFBh
dGhTZWdVbmRlZmluZWRSb2xlKTsKKyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0FyY1JlbD4gY3JlYXRl
U1ZHUGF0aFNlZ0FyY1JlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByMSwgZmxvYXQgcjIsIGZs
b2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIFNWR1BhdGhTZWdS
b2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIFJlZlB0cjxTVkdQYXRoU2VnTGluZXRv
SG9yaXpvbnRhbEFicz4gY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMoZmxvYXQg
eCwgU1ZHUGF0aFNlZ1JvbGUgPSBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CisgICAgUmVmUHRyPFNW
R1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsPiBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpv
bnRhbFJlbChmbG9hdCB4LCBTVkdQYXRoU2VnUm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsK
KyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzPiBjcmVhdGVTVkdQYXRoU2Vn
TGluZXRvVmVydGljYWxBYnMoZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgPSBQYXRoU2VnVW5kZWZp
bmVkUm9sZSk7CisgICAgUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbD4gY3JlYXRl
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsKGZsb2F0IHksIFNWR1BhdGhTZWdSb2xlID0gUGF0
aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIFJlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21v
b3RoQWJzPiBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHgyLCBmbG9hdCB5MiwgU1ZHUGF0aFNlZ1JvbGUgPSBQYXRoU2VnVW5kZWZp
bmVkUm9sZSk7CisgICAgUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw+IGNy
ZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeDIsIGZsb2F0IHkyLCBTVkdQYXRoU2VnUm9sZSA9IFBhdGhTZWdVbmRlZmluZWRSb2xlKTsK
KyAgICBSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnM+IGNyZWF0ZVNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKGZsb2F0IHgsIGZsb2F0IHksIFNWR1Bh
dGhTZWdSb2xlID0gUGF0aFNlZ1VuZGVmaW5lZFJvbGUpOworICAgIFJlZlB0cjxTVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbD4gY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0
aWNTbW9vdGhSZWwoZmxvYXQgeCwgZmxvYXQgeSwgU1ZHUGF0aFNlZ1JvbGUgPSBQYXRoU2VnVW5k
ZWZpbmVkUm9sZSk7CiAKICAgICAvLyBVc2VkIGluIHRoZSBiaW5kaW5ncyBvbmx5LgogICAgIFNW
R1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKiBwYXRoU2VnTGlzdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IGI0YjNmYmQuLmIzM2RiZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBib29s
IFNWR1NjcmlwdEVsZW1lbnQ6Omhhc1NvdXJjZUF0dHJpYnV0ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IGhhc0F0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0cik7CiB9CiAKLVBhc3NSZWZQdHI8RWxl
bWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRD
aGlsZHJlbigpCitSZWZQdHI8RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6Y2xvbmVFbGVtZW50
V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTVkdTY3JpcHRFbGVtZW50KHRhZ1FOYW1lKCksIGRvY3VtZW50KCksIGZhbHNlLCBhbHJlYWR5
U3RhcnRlZCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAppbmRleCAy
M2U5MjlkLi5hYWM5OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKQEAg
LTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRF
dmVudCgpIG92ZXJyaWRlIHsgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6ZGlzcGF0Y2hM
b2FkRXZlbnQodGhpcyk7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9u
ZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGls
ZHJlbigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291
cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhw
b3J0cy5kZWYuaW4KaW5kZXggNDQ2MTVmOC4uZWQ3NzMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5k
ZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5l
cmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTE3Nyw3ICsxNzcsNyBAQCBFWFBPUlRTCiAg
ICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jcmVhdGVDRlN0cmluZ0BTdHJpbmdAV1RGQEBRQkU/
QVY/JFJldGFpblB0ckBQQlVfX0NGU3RyaW5nQEBAMkBYWiwgP2NyZWF0ZUNGU3RyaW5nQFN0cmlu
Z0BXVEZAQFFFQkE/QVY/JFJldGFpblB0ckBQRUJVX19DRlN0cmluZ0BAQDJAWFopCiAgICAgICAg
IHN5bWJvbFdpdGhQb2ludGVyKD9kaWN0aW9uYXJ5QENGRGljdGlvbmFyeVByb3BlcnR5QmFnQEBR
QkVQQVVfX0NGRGljdGlvbmFyeUBAWFosID9kaWN0aW9uYXJ5QENGRGljdGlvbmFyeVByb3BlcnR5
QmFnQEBRRUJBUEVBVV9fQ0ZEaWN0aW9uYXJ5QEBYWikKICNlbmRpZgotICAgICAgICBzeW1ib2xX
aXRoUG9pbnRlcig/Y3JlYXRlU2hhZG93Um9vdEBFbGVtZW50QFdlYkNvcmVAQFFBRT9BVj8kUGFz
c1JlZlB0ckBWU2hhZG93Um9vdEBXZWJDb3JlQEBAV1RGQEBBQUhAWiwgP2NyZWF0ZVNoYWRvd1Jv
b3RARWxlbWVudEBXZWJDb3JlQEBRRUFBP0FWPyRQYXNzUmVmUHRyQFZTaGFkb3dSb290QFdlYkNv
cmVAQEBXVEZAQEFFQUhAWikKKyAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2NyZWF0ZVNoYWRv
d1Jvb3RARWxlbWVudEBXZWJDb3JlQEBRQUU/QVY/JFJlZlB0ckBWU2hhZG93Um9vdEBXZWJDb3Jl
QEBAV1RGQEBBQUhAWiwgP2NyZWF0ZVNoYWRvd1Jvb3RARWxlbWVudEBXZWJDb3JlQEBRRUFBP0FW
PyRSZWZQdHJAVlNoYWRvd1Jvb3RAV2ViQ29yZUBAQFdURkBAQUVBSEBaKQogICAgICAgICBzeW1i
b2xXaXRoUG9pbnRlcig/Y3JlYXRlV3JhcHBlckBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQ
QVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVk5vZGVAMUBAWiwgP2NyZWF0
ZVdyYXBwZXJAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEVBVkV4ZWNTdGF0ZUAzQFBFQVZK
U0RPTUdsb2JhbE9iamVjdEAxQFBFQVZOb2RlQDFAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2lu
dGVyKD9jcmVhdGVXcmFwcGVyQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQEFBVkpTRE9NR2xv
YmFsT2JqZWN0QDFAQUFWTm9kZUxpc3RAMUBAWiwgP2NyZWF0ZVdyYXBwZXJAV2ViQ29yZUBAWUE/
QVZKU1ZhbHVlQEpTQ0BAQUVBVkpTRE9NR2xvYmFsT2JqZWN0QDFAQUVBVk5vZGVMaXN0QDFAQFop
CiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9kZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2Rl
QE5vZGVAV2ViQ29yZUBAUUJFUEFWMTJAWFosID9kZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2Rl
QE5vZGVAV2ViQ29yZUBAUUVCQVBFQVYxMkBYWikK
</data>

          </attachment>
      

    </bug>

</bugzilla>