<?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>154312</bug_id>
          
          <creation_ts>2016-02-16 15:14:53 -0800</creation_ts>
          <short_desc>AX: Implement sentence related text marker functions using TextIterator</short_desc>
          <delta_ts>2016-02-17 10:16:53 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nan Wang">n_wang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>n_wang</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1165346</commentid>
    <comment_count>0</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-02-16 15:14:53 -0800</bug_when>
    <thetext>Improve accessibility text navigation. 
Change the sentence related text marker calls to use TextIterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165347</commentid>
    <comment_count>1</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-02-16 15:15:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/24269658&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165364</commentid>
    <comment_count>2</comment_count>
      <attachid>271497</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-02-16 15:37:49 -0800</bug_when>
    <thetext>Created attachment 271497
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165420</commentid>
    <comment_count>3</comment_count>
      <attachid>271497</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-02-16 17:30:07 -0800</bug_when>
    <thetext>Comment on attachment 271497
patch

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

looks ok

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1741
&gt; +            if (charOffset.offset == offset)

do we have a test case covering this now?

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2122
&gt; +    // We don&apos;t want to go to the previous node.

can you add why

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2193
&gt; +    if (!next.isNull() &amp;&amp; next.node-&gt;hasTagName(brTag) &amp;&amp; !characterOffset.node-&gt;hasTagName(brTag))

can you put this if into a static method. looks like you use it here and below

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2230
&gt; +    // make sure we move off of a sentence end

full sentence</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165422</commentid>
    <comment_count>4</comment_count>
      <attachid>271497</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-02-16 17:33:37 -0800</bug_when>
    <thetext>Comment on attachment 271497
patch

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

&gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1741
&gt;&gt; +            if (charOffset.offset == offset)
&gt; 
&gt; do we have a test case covering this now?

Yes, it&apos;s covered in the sentence navigation.

&gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2122
&gt;&gt; +    // We don&apos;t want to go to the previous node.
&gt; 
&gt; can you add why

Ok.

&gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2193
&gt;&gt; +    if (!next.isNull() &amp;&amp; next.node-&gt;hasTagName(brTag) &amp;&amp; !characterOffset.node-&gt;hasTagName(brTag))
&gt; 
&gt; can you put this if into a static method. looks like you use it here and below

Ok.

&gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2230
&gt;&gt; +    // make sure we move off of a sentence end
&gt; 
&gt; full sentence

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165540</commentid>
    <comment_count>5</comment_count>
      <attachid>271545</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-02-17 00:34:07 -0800</bug_when>
    <thetext>Created attachment 271545
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165617</commentid>
    <comment_count>6</comment_count>
      <attachid>271545</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-17 10:16:49 -0800</bug_when>
    <thetext>Comment on attachment 271545
patch

Clearing flags on attachment: 271545

Committed r196699: &lt;http://trac.webkit.org/changeset/196699&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165618</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-17 10:16:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271497</attachid>
            <date>2016-02-16 15:37:49 -0800</date>
            <delta_ts>2016-02-17 00:34:07 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>51695</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE2LTAyLTE2ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBzZW50ZW5jZSBy
ZWxhdGVkIHRleHQgbWFya2VyIGZ1bmN0aW9ucyB1c2luZyBUZXh0SXRlcmF0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDMxMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzaW5nIENoYXJhY3Rlck9m
ZnNldCB0byBpbXBsZW1lbnQgc2VudGVuY2UgcmVsYXRlZCB0ZXh0IG1hcmtlciBjYWxscy4gUmV1
c2VkCisgICAgICAgIGxvZ2ljIGZyb20gVmlzaWJsZVVuaXRzIGNsYXNzLiBBbHNvIGZpeGVkIGFu
IGlzc3VlIHdoZXJlIHBhcmFncmFwaCBuYXZpZ2F0aW9uCisgICAgICAgIHNob3VsZCBza2lwIHBy
ZWNlZGluZyBhbmQgZm9sbG93aW5nIEJSIG5vZGVzLgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2li
aWxpdHkvbWFjL3RleHQtbWFya2VyLXNlbnRlbmNlLW5hdi5odG1sCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXROb2Rl
QW5kT2Zmc2V0Rm9yUmVwbGFjZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFJhbmdlU3Rh
cnRPckVuZFdpdGhDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9yTm9kZUFuZE9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpwcmV2aW91c0NoYXJhY3Rlck9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpzdGFydENoYXJhY3Rlck9mZnNldE9mV29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplbmRDaGFyYWN0ZXJPZmZzZXRPZldvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cHJldmlvdXNXb3JkU3RhcnRDaGFyYWN0ZXJP
ZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bGVmdFdvcmRSYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyaWdodFdvcmRSYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJlbnRFZGl0aW5nQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6
QVhPYmplY3RDYWNoZTo6bmV4dEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0
Q2FjaGU6OnByZXZpb3VzQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6cGFyYWdyYXBoRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6Om5leHRQYXJhZ3JhcGhFbmRDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6cHJldmlvdXNQYXJhZ3JhcGhTdGFydENoYXJhY3Rlck9mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzdGFydENoYXJhY3Rlck9mZnNl
dE9mU2VudGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFj
dGVyT2Zmc2V0T2ZTZW50ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpz
ZW50ZW5jZUZvckNoYXJhY3Rlck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjpuZXh0U2VudGVuY2VFbmRDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
QVhPYmplY3RDYWNoZTo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0Q2hhcmFjdGVyT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJvb3RBWEVkaXRhYmxlRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzdGFydFdvcmRCb3VuZGFyeSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjplbmRXb3JkQm91bmRhcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6bmV4dFdvcmRCb3VuZGFyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpwcmV2aW91c1dvcmRCb3VuZGFyeSk6IERlbGV0ZWQuCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpm
b3JQYXJhbWV0ZXI6XSk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c3RhcnRXb3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6c3Rh
cnRPZldvcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kV29yZEJvdW5kYXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OnN0YXJ0U2VudGVuY2VCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpzdGFy
dE9mU2VudGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZW5kU2VudGVuY2VCb3VuZGFyeSk6Cisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuaDoKKwogMjAxNi0wMi0xMyAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFtTVkcgLT4g
T1RGIENvbnZlcnRlcl0gU1ZHIGZvbnRzIGRyYXduIGludG8gSW1hZ2VCdWZmZXJzIGFyZSBpbnZp
c2libGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAkocmV2aXNpb24gMTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwOSw3ICsxNjA5LDcgQEAg
c3RhdGljIE5vZGUqIHJlc2V0Tm9kZUFuZE9mZnNldEZvclJlcGxhYwogICAgIHJldHVybiByZXBs
YWNlZE5vZGUtPnBhcmVudE5vZGUoKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0UmFuZ2VTdGFydE9y
RW5kV2l0aENoYXJhY3Rlck9mZnNldChSZWZQdHI8UmFuZ2U+IHJhbmdlLCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldCwgYm9vbCBpc1N0YXJ0LCBFeGNlcHRpb25Db2RlJiBlYykKK3N0
YXRpYyB2b2lkIHNldFJhbmdlU3RhcnRPckVuZFdpdGhDaGFyYWN0ZXJPZmZzZXQoUmVmUHRyPFJh
bmdlPiByYW5nZSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQsIGJvb2wg
aXNTdGFydCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFyYW5nZSkgewogICAgICAg
ICBlYyA9IFJhbmdlRXJyb3I7CkBAIC0xNzM4LDExICsxNzM4LDExIEBAIENoYXJhY3Rlck9mZnNl
dCBBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXIKICAgICAgICAgICAgICAgICBjaGFyT2Zmc2V0ID0g
Y2hhcmFjdGVyT2Zmc2V0Rm9yTm9kZUFuZE9mZnNldCgqZG9tTm9kZSwgMCwgVHJhdmVyc2VPcHRp
b25Ub05vZGVFbmQpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJu
IENoYXJhY3Rlck9mZnNldCgpOwotICAgICAgICAgICAgaWYgKCFvZmZzZXQpCisgICAgICAgICAg
ICBpZiAoY2hhck9mZnNldC5vZmZzZXQgPT0gb2Zmc2V0KQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGlmIChvZmZzZXQgPiAwKQotICAgICAgICAgICAgY2hhck9m
ZnNldCA9IGNoYXJhY3Rlck9mZnNldEZvck5vZGVBbmRPZmZzZXQoKmNoYXJPZmZzZXQubm9kZSwg
Y2hhck9mZnNldC5vZmZzZXQgLSBvZmZzZXQpOworICAgICAgICAgICAgY2hhck9mZnNldCA9IGNo
YXJhY3Rlck9mZnNldEZvck5vZGVBbmRPZmZzZXQoKmNoYXJPZmZzZXQubm9kZSwgY2hhck9mZnNl
dC5vZmZzZXQgLSBvZmZzZXQsIFRyYXZlcnNlT3B0aW9uSW5jbHVkZVN0YXJ0KTsKICAgICAgICAg
cmV0dXJuIGNoYXJPZmZzZXQ7CiAgICAgfQogICAgIApAQCAtMTkxOSwzMyArMTkxOSw2IEBAIENo
YXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpwcmV2aW91c0MKICAgICByZXR1cm4gY2hhcmFj
dGVyT2Zmc2V0Rm9yTm9kZUFuZE9mZnNldCgqY2hhcmFjdGVyT2Zmc2V0Lm5vZGUsIGNoYXJhY3Rl
ck9mZnNldC5vZmZzZXQgLSAxLCBpZ25vcmVTdGFydCA/IFRyYXZlcnNlT3B0aW9uRGVmYXVsdCA6
IFRyYXZlcnNlT3B0aW9uSW5jbHVkZVN0YXJ0KTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIHN0YXJ0
V29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNl
YXJjaENvbnRleHRBdmFpbGFiaWxpdHkgbWF5SGF2ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9y
ZUNvbnRleHQpCi17Ci0gICAgQVNTRVJUKG9mZnNldCk7Ci0gICAgaWYgKG1heUhhdmVNb3JlQ29u
dGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQuc3Vic3RyaW5nKDAs
IG9mZnNldCkpKSB7Ci0gICAgICAgIG5lZWRNb3JlQ29udGV4dCA9IHRydWU7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLSAgICBuZWVkTW9yZUNvbnRleHQgPSBmYWxzZTsKLSAgICBpbnQgc3Rh
cnQsIGVuZDsKLSAgICBVMTZfQkFDS18xKHRleHQsIDAsIG9mZnNldCk7Ci0gICAgZmluZFdvcmRC
b3VuZGFyeSh0ZXh0LCBvZmZzZXQsICZzdGFydCwgJmVuZCk7Ci0gICAgcmV0dXJuIHN0YXJ0Owot
fQotCi1zdGF0aWMgdW5zaWduZWQgZW5kV29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5z
aWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHkgbWF5SGF2ZU1v
cmVDb250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCi17Ci0gICAgQVNTRVJUKG9mZnNldCA8
PSB0ZXh0Lmxlbmd0aCgpKTsKLSAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmIGVuZE9mRmly
c3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQuc3Vic3RyaW5nKG9mZnNldCkpID09IHRleHQubGVu
Z3RoKCkgLSBvZmZzZXQpIHsKLSAgICAgICAgbmVlZE1vcmVDb250ZXh0ID0gdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuIHRleHQubGVuZ3RoKCk7Ci0gICAgfQotICAgIG5lZWRNb3JlQ29udGV4dCA9IGZh
bHNlOwotICAgIGludCBlbmQ7Ci0gICAgZmluZEVuZFdvcmRCb3VuZGFyeSh0ZXh0LCBvZmZzZXQs
ICZlbmQpOwotICAgIHJldHVybiBlbmQ7Ci19Ci0KIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENh
Y2hlOjpzdGFydENoYXJhY3Rlck9mZnNldE9mV29yZChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNo
YXJhY3Rlck9mZnNldCwgRVdvcmRTaWRlIHNpZGUpCiB7CiAgICAgaWYgKGNoYXJhY3Rlck9mZnNl
dC5pc051bGwoKSkKQEAgLTE5NjIsNyArMTkzNSw3IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVj
dENhY2hlOjpzdGFydENoYXIKICAgICAgICAgICAgIHJldHVybiBjaGFyYWN0ZXJPZmZzZXQ7CiAg
ICAgfQogICAgIAotICAgIHJldHVybiBwcmV2aW91c1dvcmRCb3VuZGFyeShjLCBzdGFydFdvcmRC
b3VuZGFyeSk7CisgICAgcmV0dXJuIHByZXZpb3VzQm91bmRhcnkoYywgc3RhcnRXb3JkQm91bmRh
cnkpOwogfQogCiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFjdGVyT2Zm
c2V0T2ZXb3JkKGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0LCBFV29yZFNp
ZGUgc2lkZSkKQEAgLTE5ODEsNyArMTk1NCw3IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENh
Y2hlOjplbmRDaGFyYWMKICAgICAgICAgICAgIHJldHVybiBjaGFyYWN0ZXJPZmZzZXQ7CiAgICAg
fQogICAgIAotICAgIHJldHVybiBuZXh0V29yZEJvdW5kYXJ5KGMsIGVuZFdvcmRCb3VuZGFyeSk7
CisgICAgcmV0dXJuIG5leHRCb3VuZGFyeShjLCBlbmRXb3JkQm91bmRhcnkpOwogfQogCiBDaGFy
YWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNXb3JkU3RhcnRDaGFyYWN0ZXJPZmZz
ZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCkBAIC0yMDEwLDcgKzE5
ODMsNyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6bmV4dFdvcmRFCiAKIFJlZlB0
cjxSYW5nZT4gQVhPYmplY3RDYWNoZTo6bGVmdFdvcmRSYW5nZShjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKLSAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBwcmV2
aW91c1dvcmRTdGFydENoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAgIENoYXJh
Y3Rlck9mZnNldCBzdGFydCA9IHN0YXJ0Q2hhcmFjdGVyT2Zmc2V0T2ZXb3JkKGNoYXJhY3Rlck9m
ZnNldCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgIENoYXJhY3Rlck9mZnNldCBlbmQgPSBl
bmRDaGFyYWN0ZXJPZmZzZXRPZldvcmQoc3RhcnQpOwogICAgIHJldHVybiByYW5nZUZvclVub3Jk
ZXJlZENoYXJhY3Rlck9mZnNldHMoc3RhcnQsIGVuZCk7CiB9CkBAIC0yMDE4LDcgKzE5OTEsNyBA
QCBSZWZQdHI8UmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OmxlZnRXb3JkUmFuCiBSZWZQdHI8UmFuZ2U+
IEFYT2JqZWN0Q2FjaGU6OnJpZ2h0V29yZFJhbmdlKGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hh
cmFjdGVyT2Zmc2V0KQogewogICAgIENoYXJhY3Rlck9mZnNldCBzdGFydCA9IHN0YXJ0Q2hhcmFj
dGVyT2Zmc2V0T2ZXb3JkKGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgQ2hhcmFjdGVyT2Zmc2V0IGVu
ZCA9IG5leHRXb3JkRW5kQ2hhcmFjdGVyT2Zmc2V0KHN0YXJ0KTsKKyAgICBDaGFyYWN0ZXJPZmZz
ZXQgZW5kID0gZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZXb3JkKHN0YXJ0KTsKICAgICByZXR1cm4gcmFu
Z2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHN0YXJ0LCBlbmQpOwogfQogCkBAIC0yMDYw
LDcgKzIwMzMsNyBAQCBzdGF0aWMgTm9kZSogcGFyZW50RWRpdGluZ0JvdW5kYXJ5KE5vZGUqCiAg
ICAgcmV0dXJuIGJvdW5kYXJ5OwogfQogCi1DaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6
bmV4dFdvcmRCb3VuZGFyeShDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCwgQm91bmRh
cnlTZWFyY2hGdW5jdGlvbiBzZWFyY2hGdW5jdGlvbikKK0NoYXJhY3Rlck9mZnNldCBBWE9iamVj
dENhY2hlOjpuZXh0Qm91bmRhcnkoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZz
ZXQsIEJvdW5kYXJ5U2VhcmNoRnVuY3Rpb24gc2VhcmNoRnVuY3Rpb24pCiB7CiAgICAgaWYgKGNo
YXJhY3Rlck9mZnNldC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgp
OwpAQCAtMjA5MiwxMyArMjA2NSwxOCBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6
bmV4dFdvcmRCCiAgICAgCiAgICAgaWYgKGl0LmF0RW5kKCkgJiYgbmV4dCA9PSBzdHJpbmcuc2l6
ZSgpKQogICAgICAgICByZXR1cm4gZW5kOworICAgIAorICAgIC8vIFRoZSBlbmRTZW50ZW5jZUJv
dW5kYXJ5IGZ1bmN0aW9uIHdpbGwgaW5jbHVkZSBhIGxpbmUgYnJlYWsgYXQgdGhlIGVuZCBvZiB0
aGUgc2VudGVuY2UuCisgICAgaWYgKHNlYXJjaEZ1bmN0aW9uID09IGVuZFNlbnRlbmNlQm91bmRh
cnkgJiYgc3RyaW5nW25leHQgLSAxXSA9PSAnXG4nKQorICAgICAgICBuZXh0LS07CisgICAgCiAg
ICAgaWYgKG5leHQgPiBwcmVmaXhMZW5ndGgpCiAgICAgICAgIHJldHVybiBjaGFyYWN0ZXJPZmZz
ZXRGb3JOb2RlQW5kT2Zmc2V0KCpjaGFyYWN0ZXJPZmZzZXQubm9kZSwgY2hhcmFjdGVyT2Zmc2V0
Lm9mZnNldCArIG5leHQgLSBwcmVmaXhMZW5ndGgpOwogICAgIAogICAgIHJldHVybiBjaGFyYWN0
ZXJPZmZzZXQ7CiB9CiAKLUNoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpwcmV2aW91c1dv
cmRCb3VuZGFyeShDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCwgQm91bmRhcnlTZWFy
Y2hGdW5jdGlvbiBzZWFyY2hGdW5jdGlvbikKK0NoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hl
OjpwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0
LCBCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uIHNlYXJjaEZ1bmN0aW9uKQogewogICAgIGlmIChjaGFy
YWN0ZXJPZmZzZXQuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsK
QEAgLTIxNDEsNiArMjExOSw5IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpwcmV2
aW91c1cKICAgICB9CiAgICAgCiAgICAgaW50IGNoYXJhY3RlckNvdW50ID0gY2hhcmFjdGVyT2Zm
c2V0Lm9mZnNldCAtIChzdHJpbmcuc2l6ZSgpIC0gc3VmZml4TGVuZ3RoIC0gbmV4dCk7CisgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0byBnbyB0byB0aGUgcHJldmlvdXMgbm9kZS4KKyAgICBpZiAoY2hh
cmFjdGVyQ291bnQgPCAwKQorICAgICAgICBjaGFyYWN0ZXJDb3VudCA9IDA7CiAgICAgcmV0dXJu
IGNoYXJhY3Rlck9mZnNldEZvck5vZGVBbmRPZmZzZXQoKmNoYXJhY3Rlck9mZnNldC5ub2RlLCBj
aGFyYWN0ZXJDb3VudCwgVHJhdmVyc2VPcHRpb25JbmNsdWRlU3RhcnQpOwogfQogCkBAIC0yMTk4
LDcgKzIxNzksNyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFjCiBS
ZWZQdHI8UmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnBhcmFncmFwaEZvckNoYXJhY3Rlck9mZnNldChj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBDaGFyYWN0ZXJP
ZmZzZXQgc3RhcnQgPSBzdGFydENoYXJhY3Rlck9mZnNldE9mUGFyYWdyYXBoKGNoYXJhY3Rlck9m
ZnNldCk7Ci0gICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGVuZENoYXJhY3Rlck9mZnNldE9mUGFy
YWdyYXBoKGNoYXJhY3Rlck9mZnNldCk7CisgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGVuZENo
YXJhY3Rlck9mZnNldE9mUGFyYWdyYXBoKHN0YXJ0KTsKICAgICAKICAgICByZXR1cm4gcmFuZ2VG
b3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHN0YXJ0LCBlbmQpOwogfQpAQCAtMjIwNiwxMyAr
MjE4Nyw2MCBAQCBSZWZQdHI8UmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnBhcmFncmFwaEZvCiBDaGFy
YWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6bmV4dFBhcmFncmFwaEVuZENoYXJhY3Rlck9mZnNl
dChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICAvLyBtYWtl
IHN1cmUgd2UgbW92ZSBvZmYgb2YgYSBwYXJhZ3JhcGggZW5kCi0gICAgcmV0dXJuIGVuZENoYXJh
Y3Rlck9mZnNldE9mUGFyYWdyYXBoKG5leHRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0
KSk7CisgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KGNoYXJh
Y3Rlck9mZnNldCk7CisgICAgCisgICAgLy8gV2Ugc2hvdWxkIHNraXAgdGhlIGZvbGxvd2luZyBC
UiBub2RlLgorICAgIGlmICghbmV4dC5pc051bGwoKSAmJiBuZXh0Lm5vZGUtPmhhc1RhZ05hbWUo
YnJUYWcpICYmICFjaGFyYWN0ZXJPZmZzZXQubm9kZS0+aGFzVGFnTmFtZShiclRhZykpCisgICAg
ICAgIG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KG5leHQpOworICAgIAorICAgIHJldHVybiBl
bmRDaGFyYWN0ZXJPZmZzZXRPZlBhcmFncmFwaChuZXh0KTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0
IEFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRDaGFyYWN0ZXJPZmZzZXQoY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCiB7CiAgICAgLy8gbWFrZSBzdXJl
IHdlIG1vdmUgb2ZmIG9mIGEgcGFyYWdyYXBoIHN0YXJ0Ci0gICAgcmV0dXJuIHN0YXJ0Q2hhcmFj
dGVyT2Zmc2V0T2ZQYXJhZ3JhcGgocHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zm
c2V0LCBmYWxzZSkpOworICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91cyA9IHByZXZpb3VzQ2hh
cmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCwgZmFsc2UpOworICAgIAorICAgIC8vIFdlIHNo
b3VsZCBza2lwIHRoZSBwcmVjZWRpbmcgQlIgbm9kZS4KKyAgICBpZiAoIXByZXZpb3VzLmlzTnVs
bCgpICYmIHByZXZpb3VzLm5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpICYmICFjaGFyYWN0ZXJPZmZz
ZXQubm9kZS0+aGFzVGFnTmFtZShiclRhZykpCisgICAgICAgIHByZXZpb3VzID0gcHJldmlvdXND
aGFyYWN0ZXJPZmZzZXQocHJldmlvdXMsIGZhbHNlKTsKKyAgICAKKyAgICByZXR1cm4gc3RhcnRD
aGFyYWN0ZXJPZmZzZXRPZlBhcmFncmFwaChwcmV2aW91cyk7Cit9CisKK0NoYXJhY3Rlck9mZnNl
dCBBWE9iamVjdENhY2hlOjpzdGFydENoYXJhY3Rlck9mZnNldE9mU2VudGVuY2UoY29uc3QgQ2hh
cmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCit7CisgICAgcmV0dXJuIHByZXZpb3VzQm91
bmRhcnkoY2hhcmFjdGVyT2Zmc2V0LCBzdGFydFNlbnRlbmNlQm91bmRhcnkpOworfQorCitDaGFy
YWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZTZW50ZW5jZShj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK3sKKyAgICByZXR1cm4gbmV4
dEJvdW5kYXJ5KGNoYXJhY3Rlck9mZnNldCwgZW5kU2VudGVuY2VCb3VuZGFyeSk7Cit9CisKK1Jl
ZlB0cjxSYW5nZT4gQVhPYmplY3RDYWNoZTo6c2VudGVuY2VGb3JDaGFyYWN0ZXJPZmZzZXQoY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCit7CisgICAgQ2hhcmFjdGVyT2Zm
c2V0IHN0YXJ0ID0gc3RhcnRDaGFyYWN0ZXJPZmZzZXRPZlNlbnRlbmNlKGNoYXJhY3Rlck9mZnNl
dCk7CisgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGVuZENoYXJhY3Rlck9mZnNldE9mU2VudGVu
Y2Uoc3RhcnQpOworICAgIHJldHVybiByYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMo
c3RhcnQsIGVuZCk7Cit9CisKK0NoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpuZXh0U2Vu
dGVuY2VFbmRDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJP
ZmZzZXQpCit7CisgICAgLy8gbWFrZSBzdXJlIHdlIG1vdmUgb2ZmIG9mIGEgc2VudGVuY2UgZW5k
CisgICAgcmV0dXJuIGVuZENoYXJhY3Rlck9mZnNldE9mU2VudGVuY2UobmV4dENoYXJhY3Rlck9m
ZnNldChjaGFyYWN0ZXJPZmZzZXQpKTsKK30KKworQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2Fj
aGU6OnByZXZpb3VzU2VudGVuY2VTdGFydENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK3sKKyAgICAvLyBtYWtlIHN1cmUgd2UgbW92ZSBvZmYg
b2YgYSBzZW50ZW5jZSBzdGFydAorICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91cyA9IHByZXZp
b3VzQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCwgZmFsc2UpOworICAgIAorICAgIC8v
IFdlIHNob3VsZCBza2lwIHRoZSBwcmVjZWRpbmcgQlIgbm9kZS4KKyAgICBpZiAoIXByZXZpb3Vz
LmlzTnVsbCgpICYmIHByZXZpb3VzLm5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpICYmICFjaGFyYWN0
ZXJPZmZzZXQubm9kZS0+aGFzVGFnTmFtZShiclRhZykpCisgICAgICAgIHByZXZpb3VzID0gcHJl
dmlvdXNDaGFyYWN0ZXJPZmZzZXQocHJldmlvdXMsIGZhbHNlKTsKKyAgICAKKyAgICByZXR1cm4g
c3RhcnRDaGFyYWN0ZXJPZmZzZXRPZlNlbnRlbmNlKHByZXZpb3VzKTsKIH0KIAogY29uc3QgRWxl
bWVudCogQVhPYmplY3RDYWNoZTo6cm9vdEFYRWRpdGFibGVFbGVtZW50KGNvbnN0IE5vZGUqIG5v
ZGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aAkocmV2aXNpb24gMTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw2ICsyMTQsMTEgQEAgcHVibGljOgog
ICAgIFJlZlB0cjxSYW5nZT4gcGFyYWdyYXBoRm9yQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9mZnNldCBuZXh0UGFyYWdyYXBoRW5kQ2hhcmFj
dGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9mZnNldCBw
cmV2aW91c1BhcmFncmFwaFN0YXJ0Q2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNl
dCYpOworICAgIAorICAgIC8vIFNlbnRlbmNlCisgICAgUmVmUHRyPFJhbmdlPiBzZW50ZW5jZUZv
ckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBDaGFyYWN0ZXJP
ZmZzZXQgbmV4dFNlbnRlbmNlRW5kQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNl
dCYpOworICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91c1NlbnRlbmNlU3RhcnRDaGFyYWN0ZXJP
ZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAKICAgICBlbnVtIEFYTm90aWZpY2F0aW9u
IHsKICAgICAgICAgQVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCwKQEAgLTMxNywxMiArMzIyLDE0
IEBAIHByb3RlY3RlZDoKICAgICBVQ2hhcjMyIGNoYXJhY3RlckJlZm9yZShjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnRPckVuZENoYXJhY3Rlck9mZnNl
dEZvclJhbmdlKFJlZlB0cjxSYW5nZT4sIGJvb2wpOwogICAgIENoYXJhY3Rlck9mZnNldCBjaGFy
YWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KE5vZGUmLCBpbnQsIFRyYXZlcnNlT3B0aW9uID0g
VHJhdmVyc2VPcHRpb25EZWZhdWx0KTsKLSAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNXb3Jk
Qm91bmRhcnkoQ2hhcmFjdGVyT2Zmc2V0JiwgQm91bmRhcnlTZWFyY2hGdW5jdGlvbik7Ci0gICAg
Q2hhcmFjdGVyT2Zmc2V0IG5leHRXb3JkQm91bmRhcnkoQ2hhcmFjdGVyT2Zmc2V0JiwgQm91bmRh
cnlTZWFyY2hGdW5jdGlvbik7CisgICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzQm91bmRhcnko
Y29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgQm91bmRhcnlTZWFyY2hGdW5jdGlvbik7CisgICAgQ2hh
cmFjdGVyT2Zmc2V0IG5leHRCb3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBCb3VuZGFy
eVNlYXJjaEZ1bmN0aW9uKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnRDaGFyYWN0ZXJPZmZz
ZXRPZldvcmQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgRVdvcmRTaWRlID0gUmlnaHRXb3JkSWZP
bkJvdW5kYXJ5KTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZXb3Jk
KGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIEVXb3JkU2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFy
eSk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHN0YXJ0Q2hhcmFjdGVyT2Zmc2V0T2ZQYXJhZ3JhcGgo
Y29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fu
bm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgIENoYXJhY3Rlck9mZnNldCBlbmRDaGFyYWN0
ZXJPZmZzZXRPZlBhcmFncmFwaChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBFZGl0aW5nQm91bmRh
cnlDcm9zc2luZ1J1bGUgPSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgQ2hhcmFj
dGVyT2Zmc2V0IHN0YXJ0Q2hhcmFjdGVyT2Zmc2V0T2ZTZW50ZW5jZShjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmKTsKKyAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZTZW50ZW5j
ZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKIAogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiByb290V2ViQXJlYSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0JKHJldmlzaW9uIDE5NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00MTEyLDkgKzQxMTIsMTIgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOihOU1N0cgogICAgIH0KICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJp
bmc6QCJBWFNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4
dE1hcmtlcjoodGV4dE1hcmtlcildOwotICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJh
bmdlID0gbV9vYmplY3QtPnNlbnRlbmNlRm9yUG9zaXRpb24odmlzaWJsZVBvcyk7Ci0gICAgICAg
IHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2cFJhbmdl
LnN0YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKKyAgICAgICAgQVhPYmplY3RDYWNoZSog
Y2FjaGUgPSBtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hlKQor
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rl
ck9mZnNldCA9IFtzZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1hcmtlcl07
CisgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBjYWNoZS0+c2VudGVuY2VGb3JDaGFyYWN0
ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJr
ZXJSYW5nZUZyb21SYW5nZTpyYW5nZV07CiAgICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRl
IGlzRXF1YWxUb1N0cmluZzpAIkFYUGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtl
ciJdKSB7CkBAIC00MTU1LDE4ICs0MTU4LDMwIEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTooTlNTdHIKICAgICB9CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRv
U3RyaW5nOkAiQVhOZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7Ci0g
ICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9u
Rm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1h
cmtlckZvclZpc2libGVQb3NpdGlvbjptX29iamVjdC0+bmV4dFNlbnRlbmNlRW5kUG9zaXRpb24o
dmlzaWJsZVBvcyldOworICAgICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IG1fb2JqZWN0LT5h
eE9iamVjdENhY2hlKCk7CisgICAgICAgIGlmICghY2FjaGUpCisgICAgICAgICAgICByZXR1cm4g
bmlsOworICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gW3NlbGYgY2hh
cmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKKyAgICAgICAgQ2hhcmFjdGVy
T2Zmc2V0IG5leHRFbmQgPSBjYWNoZS0+bmV4dFNlbnRlbmNlRW5kQ2hhcmFjdGVyT2Zmc2V0KGNo
YXJhY3Rlck9mZnNldCk7CisgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFj
dGVyT2Zmc2V0Om5leHRFbmRdOwogICAgIH0KICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNp
YmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIHJldHVybiBb
c2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5wcmV2aW91c1NlbnRl
bmNlU3RhcnRQb3NpdGlvbih2aXNpYmxlUG9zKV07CisgICAgICAgIEFYT2JqZWN0Q2FjaGUqIGNh
Y2hlID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgaWYgKCFjYWNoZSkKKyAg
ICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJP
ZmZzZXQgPSBbc2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwor
ICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNTdGFydCA9IGNhY2hlLT5wcmV2aW91c1Nl
bnRlbmNlU3RhcnRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAgICAgcmV0
dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6cHJldmlvdXNTdGFydF07CiAg
ICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTmV4dFBh
cmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0
ZXh0TWFya2VyKV07Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBv
c2l0aW9uOm1fb2JqZWN0LT5uZXh0UGFyYWdyYXBoRW5kUG9zaXRpb24odmlzaWJsZVBvcyldOwor
ICAgICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCk7
CisgICAgICAgIGlmICghY2FjaGUpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICBD
aGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gW3NlbGYgY2hhcmFjdGVyT2Zmc2V0Rm9y
VGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKKyAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHRFbmQg
PSBjYWNoZS0+bmV4dFBhcmFncmFwaEVuZENoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQp
OworICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpuZXh0
RW5kXTsKICAgICB9CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAi
QVhQcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAkocmV2aXNpb24gMTk2NTU5
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NTgsNyArNjU4LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRh
cnkoY29ucwogCiAvLyAtLS0tLS0tLS0KIAotc3RhdGljIHVuc2lnbmVkIHN0YXJ0V29yZEJvdW5k
YXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRl
eHRBdmFpbGFiaWxpdHkgbWF5SGF2ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQp
Cit1bnNpZ25lZCBzdGFydFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVkIG9m
ZnNldCwgQm91bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5IG1heUhhdmVNb3JlQ29udGV4
dCwgYm9vbCYgbmVlZE1vcmVDb250ZXh0KQogewogICAgIEFTU0VSVChvZmZzZXQpOwogICAgIGlm
IChtYXlIYXZlTW9yZUNvbnRleHQgJiYgIXN0YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dCh0
ZXh0LnN1YnN0cmluZygwLCBvZmZzZXQpKSkgewpAQCAtNjg5LDcgKzY4OSw3IEBAIFZpc2libGVQ
b3NpdGlvbiBzdGFydE9mV29yZChjb25zdCBWaXNpYmwKICAgICByZXR1cm4gcHJldmlvdXNCb3Vu
ZGFyeShwLCBzdGFydFdvcmRCb3VuZGFyeSk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBlbmRXb3Jk
Qm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5U2VhcmNo
Q29udGV4dEF2YWlsYWJpbGl0eSBtYXlIYXZlTW9yZUNvbnRleHQsIGJvb2wmIG5lZWRNb3JlQ29u
dGV4dCkKK3Vuc2lnbmVkIGVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVk
IG9mZnNldCwgQm91bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5IG1heUhhdmVNb3JlQ29u
dGV4dCwgYm9vbCYgbmVlZE1vcmVDb250ZXh0KQogewogICAgIEFTU0VSVChvZmZzZXQgPD0gdGV4
dC5sZW5ndGgoKSk7CiAgICAgaWYgKG1heUhhdmVNb3JlQ29udGV4dCAmJiBlbmRPZkZpcnN0V29y
ZEJvdW5kYXJ5Q29udGV4dCh0ZXh0LnN1YnN0cmluZyhvZmZzZXQpKSA9PSB0ZXh0Lmxlbmd0aCgp
IC0gb2Zmc2V0KSB7CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCBWaXNpYmxlUG9zaXRpb24gbmV4dExp
bmVQb3NpdGlvbihjb25zdCBWCiAKIC8vIC0tLS0tLS0tLQogCi1zdGF0aWMgdW5zaWduZWQgc3Rh
cnRTZW50ZW5jZUJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQsIEJvdW5kYXJ5U2Vh
cmNoQ29udGV4dEF2YWlsYWJpbGl0eSwgYm9vbCYpCit1bnNpZ25lZCBzdGFydFNlbnRlbmNlQm91
bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwgQm91bmRhcnlTZWFyY2hDb250ZXh0QXZh
aWxhYmlsaXR5LCBib29sJikKIHsKICAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBmdW5jdGlv
biBjYW4gcmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5kbGUgdGhhdC4KICAgICByZXR1cm4gdGV4dEJy
ZWFrUHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7
CkBAIC0xMTA3LDcgKzExMDcsNyBAQCBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZlNlbnRlbmNlKGNv
bnN0IFZpCiAgICAgcmV0dXJuIHByZXZpb3VzQm91bmRhcnkocG9zaXRpb24sIHN0YXJ0U2VudGVu
Y2VCb3VuZGFyeSk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBlbmRTZW50ZW5jZUJvdW5kYXJ5KFN0
cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2YWlsYWJpbGl0
eSwgYm9vbCYpCit1bnNpZ25lZCBlbmRTZW50ZW5jZUJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwg
dW5zaWduZWQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2YWlsYWJpbGl0eSwgYm9vbCYpCiB7CiAg
ICAgcmV0dXJuIHRleHRCcmVha05leHQoc2VudGVuY2VCcmVha0l0ZXJhdG9yKHRleHQpKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAkocmV2aXNpb24gMTk2NTU5
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTEyLDYgKzExMiwxMCBAQCBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiBy
YW5nZUV4CiAvLyBoZWxwZXIgZnVuY3Rpb24KIGVudW0gQm91bmRhcnlTZWFyY2hDb250ZXh0QXZh
aWxhYmlsaXR5IHsgRG9udEhhdmVNb3JlQ29udGV4dCwgTWF5SGF2ZU1vcmVDb250ZXh0IH07CiB0
eXBlZGVmIHVuc2lnbmVkICgqQm91bmRhcnlTZWFyY2hGdW5jdGlvbikoU3RyaW5nVmlldywgdW5z
aWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHksIGJvb2wmIG5l
ZWRNb3JlQ29udGV4dCk7Cit1bnNpZ25lZCBzdGFydFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3LCB1
bnNpZ25lZCwgQm91bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5LCBib29sJik7Cit1bnNp
Z25lZCBlbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldywgdW5zaWduZWQsIEJvdW5kYXJ5U2VhcmNo
Q29udGV4dEF2YWlsYWJpbGl0eSwgYm9vbCYpOwordW5zaWduZWQgc3RhcnRTZW50ZW5jZUJvdW5k
YXJ5KFN0cmluZ1ZpZXcsIHVuc2lnbmVkLCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxp
dHksIGJvb2wmKTsKK3Vuc2lnbmVkIGVuZFNlbnRlbmNlQm91bmRhcnkoU3RyaW5nVmlldywgdW5z
aWduZWQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2YWlsYWJpbGl0eSwgYm9vbCYpOwogdW5zaWdu
ZWQgc3VmZml4TGVuZ3RoRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPiwgVmVjdG9yPFVDaGFyLCAxMDI0
PiYpOwogdW5zaWduZWQgcHJlZml4TGVuZ3RoRm9yUmFuZ2UoUmVmUHRyPFJhbmdlPiwgVmVjdG9y
PFVDaGFyLCAxMDI0PiYpOwogdW5zaWduZWQgYmFja3dhcmRTZWFyY2hGb3JCb3VuZGFyeVdpdGhU
ZXh0SXRlcmF0b3IoU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciYsIFZlY3RvcjxVQ2hh
ciwgMTAyND4mLCB1bnNpZ25lZCwgQm91bmRhcnlTZWFyY2hGdW5jdGlvbik7CkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTY2
NjMpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NSBAQAor
MjAxNi0wMi0xNiAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBJ
bXBsZW1lbnQgc2VudGVuY2UgcmVsYXRlZCB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgdXNpbmcgVGV4
dEl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTQzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAo
bmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyQ2FsbGJhY2spOgorICAgICAg
ICAoc2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyQ2FsbGJhY2spOgorICAgICAg
ICAocHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJDYWxsYmFjayk6
CisgICAgICAgIChuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlckNhbGxiYWNr
KToKKyAgICAgICAgKHNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5nZUNhbGxiYWNrKToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZVRl
eHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFz
cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1t
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
bnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2Vy
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFy
dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1cHBvcnRlZEFjdGlvbnMpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFncmFwaFRleHRNYXJrZXJS
YW5nZUZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
ZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzU2VudGVu
Y2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9z
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1h
cmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2Vu
dGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6Ol9jb252ZXJ0
TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmluZyk6CisKIDIwMTYtMDItMTUgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gR2F0aGVyIHNvbWUgcnVk
aW1lbnRhcnkgc3RhdGlzdGljcyBkdXJpbmcgcmVzb3VyY2UgbG9hZCAKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
OTY1NTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAzNyw2ICsxMDM3LDMzIEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IG5leHRQYXJhZ3JhcGhFbmRUZXh0TWEKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6Om1ha2VKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGNvbnRleHQsIHRvQVhFbGVtZW50KHRo
aXNPYmplY3QpLT5uZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIobWFya2Vy
KSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4
dE1hcmtlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyID0gbnVsbHB0cjsKKyAgICBpZiAoYXJndW1lbnRD
b3VudCA9PSAxKQorICAgICAgICBtYXJrZXIgPSB0b1RleHRNYXJrZXIoSlNWYWx1ZVRvT2JqZWN0
KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgCisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6Om1ha2VKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UoY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnNlbnRlbmNlVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlcihtYXJrZXIpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgcHJl
dmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1h
cmtlciA9IG51bGxwdHI7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgbWFy
a2VyID0gdG9UZXh0TWFya2VyKEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcmd1bWVudHNbMF0s
IGV4Y2VwdGlvbikpOworICAgIAorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6
bWFrZUpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09i
amVjdCktPnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKG1hcmtl
cikpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyID0gbnVsbHB0cjsKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA9PSAxKQorICAgICAgICBtYXJrZXIgPSB0b1RleHRNYXJrZXIoSlNWYWx1ZVRvT2Jq
ZWN0KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgCisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjptYWtlSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihj
b250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXIobWFya2VyKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFNlbGVj
dGVkVmlzaWJsZVRleHRSYW5nZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
IHsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiB1aUVsZW1lbnQgPSB0b0FYRWxlbWVudCh0
aGlzT2JqZWN0KTsKQEAgLTE2NjIsNiArMTY4OSwyMSBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciBBY2Nlc3NpYmlsaXR5VUlFCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFy
a2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCitB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVu
Y2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKICNlbmRpZgogCiAvLyBEZXN0cnVjdGlvbgpAQCAt
MTg0OSw2ICsxODkxLDkgQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRK
UwogICAgICAgICB7ICJwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiwgcGFy
YWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIsIHBy
ZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlckNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgIm5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIs
IG5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlckNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CisgICAgICAgIHsgInNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIsIHNlbnRl
bmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAg
IHsgInByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiwgcHJldmlv
dXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAor
ICAgICAgICB7ICJuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIsIG5leHRT
ZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2V0U2VsZWN0ZWRDaGlsZCIsIHNldFNlbGVjdGVkQ2hpbGRDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRTZWxlY3RlZENoaWxkQXRJbmRleCIsIHNldFNlbGVjdGVkQ2hpbGRB
dEluZGV4Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicmVtb3ZlU2VsZWN0aW9uQXRJbmRl
eCIsIHJlbW92ZVNlbGVjdGlvbkF0SW5kZXhDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTk2
NTU5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjcsNiArMjY3LDkgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UgcGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHBy
ZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciopOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIG5leHRQYXJhZ3JhcGhF
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAg
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ugc2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JU
ZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CisgICAgQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIgcHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBuZXh0
U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ugc2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2UoKTsKICAgICB2b2lkIHJlc2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKICAgICBi
b29sIHNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKik7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbQkocmV2aXNpb24gMTk2NTU5KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTU4NSw2ICs1ODUsMjEgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0
eVVJRQogICAgIHJldHVybiBudWxscHRyOwogfQogCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBy
ZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKikKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKQoreworICAgIHJldHVybiBu
dWxscHRyOworfQorCiAjZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExBVEZP
Uk0oSU9TKQogCiAjcHJhZ21hIG1hcmsgVW51c2VkCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24g
MTk2NTU5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5MTYsNiArMTkxNiwzNiBAQCBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
K0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Vu
dGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KiB0ZXh0TWFya2VyKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHRl
eHRNYXJrZXJSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhTZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQp
dGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIAorICAgIHJldHVybiBudWxscHRyOworfQorCitBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikK
K3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBwcmV2aW91c1RleHRNYXJr
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUHJldmlvdXNT
ZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4
dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcihwcmV2aW91c1RleHRNYXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCit7CisgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgbmV4dFRleHRNYXJrZXIgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0
TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihuZXh0VGV4dE1h
cmtlcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBudWxs
cHRyOworfQorCiAjZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMgJiYgUExBVEZPUk0o
TUFDKQogCiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdXBwb3J0ZWRBY3Rp
b25zKCkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24gMTk2
NTU5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1Miw5IEBAIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2UKIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4
dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0
dXJuIG51bGxwdHI7IH0KIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZp
b3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2Vy
UmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVs
bHB0cjsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVybiBudWxscHRyOyB9CitQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRl
bmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciop
IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAxOTY1NTkpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IHBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZv
clRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKICAgICBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKICAgICBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBwcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyUmFuZ2U+IHNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXI+IG5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKik7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gcHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqKTsKIAogICAgIC8vIFJldHVybnMgYW4gb3JkZXJlZCBsaXN0IG9m
IHN1cHBvcnRlZCBhY3Rpb25zIGZvciBhbiBlbGVtZW50LgogICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBzdXBwb3J0ZWRBY3Rpb25zKCkgY29uc3Q7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwJKHJldmlzaW9uIDE5NjU1OSkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgsOSBAQCBpbnRlcmZh
Y2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZSBwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIHRleHRNYXJrZXIpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHByZXZp
b3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciB0ZXh0TWFya2VyKTsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBuZXh0UGFy
YWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIg
dGV4dE1hcmtlcik7CisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBzZW50ZW5jZVRl
eHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgdGV4dE1h
cmtlcik7CisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgcHJldmlvdXNTZW50ZW5jZVN0YXJ0
VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgdGV4dE1hcmtl
cik7CisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgbmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgdGV4dE1hcmtlcik7CiAKICAg
ICAvLyBSZXR1cm5zIGFuIG9yZGVyZWQgbGlzdCBvZiBzdXBwb3J0ZWQgYWN0aW9ucyBmb3IgYW4g
ZWxlbWVudC4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHN1cHBvcnRlZEFjdGlv
bnM7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHJl
dmlzaW9uIDE5NjU1OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
aW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMzEs
NiArMTEzMSwyMSBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2NlCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQoreworICAg
IHJldHVybiBudWxscHRyOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK3sKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCit7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIDA7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0J
KHJldmlzaW9uIDE5NjU1OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5
NDMsNiArMTk0MywzNiBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQorewor
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZW50ZW5jZVRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIiIGZvclBhcmFtZXRlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZv
cm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
OjpjcmVhdGUodGV4dE1hcmtlclJhbmdlKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisg
ICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2Vy
KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHByZXZpb3VzUGFyYWdy
YXBoU3RhcnRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYUHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiIGZvclBhcmFt
ZXRlcjooaWQpdGV4dE1hcmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHByZXZpb3VzUGFyYWdyYXBoU3RhcnRNYXJr
ZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCisgICAgaWQgbmV4dFBhcmFncmFwaEVuZE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIo
KV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUobmV4dFBhcmFn
cmFwaEVuZE1hcmtlcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJl
dHVybiBudWxscHRyOworfQorCiBzdGF0aWMgTlNTdHJpbmcgKl9jb252ZXJ0TWF0aE11bHRpc2Ny
aXB0UGFpcnNUb1N0cmluZyhOU0FycmF5ICpwYWlycykKIHsKICAgICBfX2Jsb2NrIE5TTXV0YWJs
ZVN0cmluZyAqcmVzdWx0ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTk2NTU5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTYtMDItMTYgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4K
KworICAgICAgICBBWDogSW1wbGVtZW50IHNlbnRlbmNlIHJlbGF0ZWQgdGV4dCBtYXJrZXIgZnVu
Y3Rpb25zIHVzaW5nIFRleHRJdGVyYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtlci1wYXJhZ3Jh
cGgtbmF2LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1h
cmtlci1wYXJhZ3JhcGgtbmF2Lmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvdGV4
dC1tYXJrZXItc2VudGVuY2UtbmF2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJrZXItc2VudGVuY2UtbmF2Lmh0bWw6IEFkZGVkLgorCiAy
MDE2LTAyLTEyICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IElt
cGxlbWVudCBwYXJhZ3JhcGggcmVsYXRlZCB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgdXNpbmcgVGV4
dEl0ZXJhdG9yCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtl
ci1wYXJhZ3JhcGgtbmF2LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtlci1wYXJhZ3JhcGgtbmF2LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTk2NTU5KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1t
YXJrZXItcGFyYWdyYXBoLW5hdi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwLDYg
KzEwLDggQEAgbGluZSBicmVha3MKIHNvbWUKIHRleHQKIHRoaXMgaXMgbXkgZmlyc3QgcGFyYWdy
YXBoLiBPZiB0ZXh0LiBpdCBoYXMgc29tZSB0ZXh0LgorCisKIHRoaXMgaXMgbXkgc2Vjb25kIHBh
cmFncmFwaC4gT2YgdGV4dC4gaXQgaGFzIHNvbWUgdGV4dC4KIHRoaXMgaXMgbXkgdGhpcmQgcGFy
YWdyYXBoLiBPZiB0ZXh0LiBpdCBoYXMgc29tZSB0ZXh0LgogCkBAIC02OCwxMCArNzAsMTQgQEAg
Q3VycmVudCBwYXJhZ3JhcGggaXM6IHRleHQKIFByZSBwYXJhZ3JhcGggc3RhcnQgdG8gbmV4dCBw
YXJhZ3JhcGggZW5kOiB0ZXh0CiAKIFBhcmFncmFwaDogdGhpcyBpcyBteSBmaXJzdCBwYXJhZ3Jh
cGguIE9mIHRleHQuIGl0IGhhcyBzb21lIHRleHQuCitQYXJhZ3JhcGg6IAorUGFyYWdyYXBoOiAK
IFBhcmFncmFwaDogdGhpcyBpcyBteSBzZWNvbmQgcGFyYWdyYXBoLiBPZiB0ZXh0LiBpdCBoYXMg
c29tZSB0ZXh0LgogUGFyYWdyYXBoOiB0aGlzIGlzIG15IHRoaXJkIHBhcmFncmFwaC4gT2YgdGV4
dC4gaXQgaGFzIHNvbWUgdGV4dC4KIFBhcmFncmFwaDogdGhpcyBpcyBteSB0aGlyZCBwYXJhZ3Jh
cGguIE9mIHRleHQuIGl0IGhhcyBzb21lIHRleHQuCiBQYXJhZ3JhcGg6IHRoaXMgaXMgbXkgc2Vj
b25kIHBhcmFncmFwaC4gT2YgdGV4dC4gaXQgaGFzIHNvbWUgdGV4dC4KK1BhcmFncmFwaDogCitQ
YXJhZ3JhcGg6IAogUGFyYWdyYXBoOiB0aGlzIGlzIG15IGZpcnN0IHBhcmFncmFwaC4gT2YgdGV4
dC4gaXQgaGFzIHNvbWUgdGV4dC4KIFRlc3QgZ29pbmcgZm9yd2FyZC4KIEVuZCBwYXJhZ3JhcGg6
IHRleHQKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXBh
cmFncmFwaC1uYXYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy90ZXh0LW1hcmtlci1wYXJhZ3JhcGgtbmF2Lmh0bWwJKHJldmlzaW9uIDE5NjU1OSkKKysr
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXBhcmFncmFwaC1uYXYu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBsaW5lIGJyZWFrcwogc29tZTxi
cj50ZXh0CiA8L2Rpdj4KIAotPGRpdiBpZD0idGV4dDkiPnRoaXMgaXMgbXkgZmlyc3QgcGFyYWdy
YXBoLiBPZiB0ZXh0LiBpdCBoYXMgc29tZSB0ZXh0Ljxicj4KKzxkaXYgaWQ9InRleHQ5Ij50aGlz
IGlzIG15IGZpcnN0IHBhcmFncmFwaC4gT2YgdGV4dC4gaXQgaGFzIHNvbWUgdGV4dC48YnI+PGJy
Pjxicj4KIHRoaXMgaXMgbXkgc2Vjb25kIHBhcmFncmFwaC4gT2YgdGV4dC4gaXQgaGFzIHNvbWUg
dGV4dC48YnI+CiB0aGlzIGlzIG15IHRoaXJkIHBhcmFncmFwaC4gT2YgdGV4dC4gaXQgaGFzIHNv
bWUgdGV4dC48YnI+PGJyPgogPC9kaXY+CkBAIC0xMjEsNyArMTIxLDcgQEAgdGhpcyBpcyBteSB0
aGlyZCBwYXJhZ3JhcGguIE9mIHRleHQuIGl0IAogICAgICAgICBzdGFydE1hcmtlciA9IHRleHQu
c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAg
ICAgIHN0YXJ0TWFya2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihzdGFydE1hcmtlcik7CiAgICAg
ICAgIHZhciBlbmRNYXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dE1hcmtlclJhbmdlKTsKLSAgICAgICAgdmVyaWZ5UGFyYWdyYXBocyh0ZXh0LCBzdGFydE1h
cmtlciwgMyk7CisgICAgICAgIHZlcmlmeVBhcmFncmFwaHModGV4dCwgc3RhcnRNYXJrZXIsIDUp
OwogICAgICAgICAKICAgICAgICAgLy8gQ2hlY2sgdGhlIHBhcmFncmFwaCBtYXJrZXIgcnVucyBm
cm9tIHN0YXJ0IHRvIGVuZCwgYW5kIGJhY2t3YXJkcy4KICAgICAgICAgLy8gTWFrZSBzdXJlIGl0
IHdvbid0IGhhbmcuCkBAIC0xNjAsMjYgKzE2MCwyMyBAQCB0aGlzIGlzIG15IHRoaXJkIHBhcmFn
cmFwaC4gT2YgdGV4dC4gaXQgCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9u
IHZlcmlmeVBhcmFncmFwaHMob2JqLCBzdGFydE1hcmtlciwgcGFyYWdyYXBoQ291bnQpIHsKLSAg
ICAgICAgICAgIC8vIE1vdmUgdG8gdGhlIGVuZCBvZiBmaXJzdCBwYXJhZ3JhcGgsIHNvIHRoZSBm
aXJzdCBwYXJhZ3JhcGgKLSAgICAgICAgICAgIC8vIHdvbid0IHByaW50IHR3aWNlLgotICAgICAg
ICAgICAgdmFyIGN1cnJlbnQgPSBvYmoubmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyKHN0YXJ0TWFya2VyKTsKKyAgICAgICAgICAgIHZhciBjdXJyZW50ID0gc3RhcnRNYXJr
ZXI7CiAgICAgICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgICAgICB3aGlsZShpIDwgcGFyYWdy
YXBoQ291bnQpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gb2JqLm5leHRQYXJhZ3JhcGhF
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihjdXJyZW50KTsKICAgICAgICAgICAgICAgICB2YXIg
Y3VyclJhbmdlID0gb2JqLnBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoY3Vy
cmVudCk7CiAgICAgICAgICAgICAgICAgdmFyIGN1cnJQYXJhZ3JhcGggPSBvYmouc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKGN1cnJSYW5nZSk7CiAgICAgICAgICAgICAgICAgZGVidWcoIlBhcmFn
cmFwaDogIiArIGN1cnJQYXJhZ3JhcGgpOwotICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBvYmou
bmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKGN1cnJlbnQpOwogICAgICAg
ICAgICAgICAgIGkrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAg
Ly8gQmFja3dhcmRzLgotICAgICAgICAgICAgY3VycmVudCA9IG9iai5wcmV2aW91c1BhcmFncmFw
aFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoY3VycmVudCk7CiAgICAgICAgICAgICBpID0g
MDsKICAgICAgICAgICAgIHdoaWxlKGkgPCBwYXJhZ3JhcGhDb3VudCkgeworICAgICAgICAgICAg
ICAgIGN1cnJlbnQgPSBvYmoucHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyKGN1cnJlbnQpOwogICAgICAgICAgICAgICAgIHZhciBjdXJyUmFuZ2UgPSBvYmoucGFy
YWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihjdXJyZW50KTsKICAgICAgICAgICAg
ICAgICB2YXIgY3VyclBhcmFncmFwaCA9IG9iai5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoY3Vy
clJhbmdlKTsKICAgICAgICAgICAgICAgICBkZWJ1ZygiUGFyYWdyYXBoOiAiICsgY3VyclBhcmFn
cmFwaCk7Ci0gICAgICAgICAgICAgICAgY3VycmVudCA9IG9iai5wcmV2aW91c1BhcmFncmFwaFN0
YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoY3VycmVudCk7CiAgICAgICAgICAgICAgICAgaSsr
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy90ZXh0LW1hcmtlci1zZW50ZW5jZS1uYXYtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXNlbnRlbmNlLW5h
di1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy90ZXh0LW1hcmtlci1zZW50ZW5jZS1uYXYtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTIgQEAKK1RoaXMgaXMgYSBzZW50ZW5jZSwgcmlnaHQ/IFllcyEKK3Rlc3Qg
YXVkaW8gZmlsZS4KK+W3p+WFi+WKmyDmmK/po5/nianlkJc/IOaYr+eahOOAggor2YPZitmBINit
2KfZhNmD2J8KK2JvdGggICBzcGFjZXMKK2xpbmUgYnJlYWtzLiBSaWdodD8KK1RoaXMgaXMgbXkg
Zmlyc3Qgc2VudGVuY2UuIAorCitUaGlzIGlzIG15IHNlY29uZCBzZW50ZW5jZS4gVGhpcyBpcyBt
eSB0aGlyZCBzZW50ZW5jZS4gVGhpcyBpcyBteSBmb3VydGggc2VudGVuY2UuCitUaGlzIHRlc3Rz
IHRoYXQgc2VudGVuY2UgbmF2aWdhdGlvbiBpcyB3b3JraW5nIGNvcnJlY3RseS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0N1cnJlbnQgY2hhcmFjdGVyIGlzOiBUCitDdXJyZW50
IHNlbnRlbmNlIGlzOiBUaGlzIGlzIGEgc2VudGVuY2UsIHJpZ2h0PyAKK1ByZSBzZW50ZW5jZSBz
dGFydCB0byBuZXh0IHNlbnRlbmNlIGVuZDogVGhpcyBpcyBhIHNlbnRlbmNlLCByaWdodD8gCisK
K0N1cnJlbnQgY2hhcmFjdGVyIGlzOiB0CitDdXJyZW50IHNlbnRlbmNlIGlzOiB0ZXN0IGF1ZGlv
IFtBVFRBQ0hNRU5UXWZpbGUuCitQcmUgc2VudGVuY2Ugc3RhcnQgdG8gbmV4dCBzZW50ZW5jZSBl
bmQ6IHRlc3QgYXVkaW8gW0FUVEFDSE1FTlRdZmlsZS4KKworQ3VycmVudCBjaGFyYWN0ZXIgaXM6
IOW3pworQ3VycmVudCBzZW50ZW5jZSBpczog5ben5YWL5YqbIOaYr+mjn+eJqeWQlz8gCitQcmUg
c2VudGVuY2Ugc3RhcnQgdG8gbmV4dCBzZW50ZW5jZSBlbmQ6IOW3p+WFi+WKmyDmmK/po5/nianl
kJc/IAorCitDdXJyZW50IGNoYXJhY3RlciBpczog2YMKK0N1cnJlbnQgc2VudGVuY2UgaXM6INmD
2YrZgSDYrdin2YTZg9ifCitQcmUgc2VudGVuY2Ugc3RhcnQgdG8gbmV4dCBzZW50ZW5jZSBlbmQ6
INmD2YrZgSDYrdin2YTZg9ifCisKK0N1cnJlbnQgY2hhcmFjdGVyIGlzOiBiCitDdXJyZW50IHNl
bnRlbmNlIGlzOiBib3RoICAgc3BhY2VzCitQcmUgc2VudGVuY2Ugc3RhcnQgdG8gbmV4dCBzZW50
ZW5jZSBlbmQ6IGJvdGggICBzcGFjZXMKKworQ3VycmVudCBjaGFyYWN0ZXIgaXM6IGkKK0N1cnJl
bnQgc2VudGVuY2UgaXM6IGxpbmUgYnJlYWtzLiAKK1ByZSBzZW50ZW5jZSBzdGFydCB0byBuZXh0
IHNlbnRlbmNlIGVuZDogbGluZSBicmVha3MuIAorCitTZW50ZW5jZTogVGhpcyBpcyBteSBmaXJz
dCBzZW50ZW5jZS4gCitTZW50ZW5jZTogCitTZW50ZW5jZTogVGhpcyBpcyBteSBzZWNvbmQgc2Vu
dGVuY2UuIAorU2VudGVuY2U6IFRoaXMgaXMgbXkgdGhpcmQgc2VudGVuY2UuIAorU2VudGVuY2U6
IFRoaXMgaXMgbXkgZm91cnRoIHNlbnRlbmNlLgorU2VudGVuY2U6IFRoaXMgaXMgbXkgZm91cnRo
IHNlbnRlbmNlLgorU2VudGVuY2U6IFRoaXMgaXMgbXkgdGhpcmQgc2VudGVuY2UuIAorU2VudGVu
Y2U6IFRoaXMgaXMgbXkgc2Vjb25kIHNlbnRlbmNlLiAKK1NlbnRlbmNlOiAKK1NlbnRlbmNlOiBU
aGlzIGlzIG15IGZpcnN0IHNlbnRlbmNlLiAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy90ZXh0LW1hcmtlci1zZW50ZW5jZS1uYXYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtlci1zZW50ZW5jZS1uYXYuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXNlbnRl
bmNlLW5hdi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQxIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPiAKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorCis8ZGl2IGlk
PSJ0ZXh0MSIgdGFiaW5kZXg9IjAiPgorVGhpcyBpPHNwYW4+cyBhIHNlbjwvc3Bhbj50ZW5jZSwK
K3JpZ2h0PyBZZXMhCis8L2Rpdj4KKworPGRpdiBpZD0idGV4dDIiPgordGVzdCBhdWRpbyA8YXVk
aW8gY29udHJvbHM+PHNvdXJjZSBzcmM9InRlc3QubXAzIiB0eXBlPSJhdWRpby9tcGVnIj48L2F1
ZGlvPmZpbGUuCis8L2Rpdj4KKworPGRpdiBpZD0idGV4dDMiPgor5ben5YWL5YqbCivmmK/po5/n
ianlkJc/IOaYr+eahOOAggorPC9kaXY+CisKKzxkaXYgaWQ9InRleHQzYSI+CivZg9mK2YEg2K3Y
p9mE2YPYnworPC9kaXY+CisKKzxwcmUgaWQ9InRleHQ0Ij4KK2JvdGggICBzcGFjZXMKK2xpbmUg
YnJlYWtzLiBSaWdodD8KKzwvcHJlPgorCis8ZGl2IGlkPSJ0ZXh0NSI+CitUaGlzIGlzIG15IGZp
cnN0IHNlbnRlbmNlLiA8YnI+PGJyPgorVGhpcyBpcyBteSBzZWNvbmQgc2VudGVuY2UuIFRoaXMg
aXMgbXkgdGhpcmQgc2VudGVuY2UuCitUaGlzIGlzIG15IGZvdXJ0aCBzZW50ZW5jZS4KKzwvZGl2
PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
Cis8c2NyaXB0PgorCisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBzZW50ZW5jZSBu
YXZpZ2F0aW9uIGlzIHdvcmtpbmcgY29ycmVjdGx5LiIpOworICAgIAorICAgIGlmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB3
ZSBjYW4gZ2V0IHRoZSBwYXJhZ3JhcGggcmFuZ2Ugd2l0aCBzcGFuIHRhZy4KKyAgICAgICAgdmFy
IHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRl
eHQxIik7CisgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvckVsZW1lbnQodGV4dCk7CisgICAgICAgIHZhciBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgICAgIHZh
ciBjdXJyZW50TWFya2VyID0gYWR2YW5jZUFuZFZlcmlmeShzdGFydE1hcmtlciwgMSwgdGV4dCk7
CisgICAgICAgIAorICAgICAgICAvLyBBdWRpbyB0YWcuCisgICAgICAgIHRleHQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQyIik7CisgICAgICAg
IHRleHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsK
KyAgICAgICAgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0TWFya2VyUmFuZ2UpOworICAgICAgICBjdXJyZW50TWFya2VyID0gYWR2YW5jZUFu
ZFZlcmlmeShzdGFydE1hcmtlciwgMSwgdGV4dCk7CisgICAgICAgIAorICAgICAgICAvLyBNdWx0
aS1sYW5ndWFnZXMuCisgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoInRleHQzIik7CisgICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKKyAgICAgICAgc3RhcnRNYXJrZXIg
PSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2Up
OworICAgICAgICBjdXJyZW50TWFya2VyID0gYWR2YW5jZUFuZFZlcmlmeShzdGFydE1hcmtlciwg
MSwgdGV4dCk7CisgICAgICAgIAorICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0M2EiKTsKKyAgICAgICAgdGV4dE1hcmtlclJh
bmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOworICAgICAgICBzdGFy
dE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJr
ZXJSYW5nZSk7CisgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KHN0YXJ0
TWFya2VyLCAxLCB0ZXh0KTsKKyAgICAgICAgCisgICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdp
dGggcHJlIHRhZy4KKyAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgidGV4dDQiKTsKKyAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOworICAgICAgICBzdGFydE1hcmtlciA9
IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7
CisgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KHN0YXJ0TWFya2VyLCAx
LCB0ZXh0KTsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IGFkdmFuY2VBbmRWZXJpZnkoY3VycmVu
dE1hcmtlciwgMTUsIHRleHQpOworICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgZ2V0dGluZyB0
aGUgY29ycmVjdCBzZW50ZW5jZXMuCisgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ1Iik7CisgICAgICAgIHRleHRNYXJrZXJS
YW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKKyAgICAgICAgc3Rh
cnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFy
a2VyUmFuZ2UpOworICAgICAgICB2ZXJpZnlTZW50ZW5jZXModGV4dCwgc3RhcnRNYXJrZXIsIDUp
OworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gYWR2YW5jZUFuZFZlcmlmeShjdXJyZW50TWFy
a2VyLCBvZmZzZXQsIG9iaikgeworICAgICAgICAgICAgdmFyIHByZXZpb3VzTWFya2VyID0gY3Vy
cmVudE1hcmtlcjsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2Zmc2V0OyBpKysp
IHsKKyAgICAgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CisgICAg
ICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9iai5uZXh0VGV4dE1hcmtlcihwcmV2aW91c01h
cmtlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2ZXJpZnlTZW50ZW5jZVJhbmdlRm9y
VGV4dE1hcmtlcihwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2JqKTsKKyAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50TWFya2VyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBm
dW5jdGlvbiByZXBsYWNlQXR0YWNobWVudEluU3RyaW5nKHN0cikgeworICAgICAgICAgICAgc3Ry
ID0gIHN0ci5yZXBsYWNlKFN0cmluZy5mcm9tQ2hhckNvZGUoNjU1MzIpLCAiW0FUVEFDSE1FTlRd
Iik7CisgICAgICAgICAgICByZXR1cm4gc3RyOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBmdW5jdGlvbiB2ZXJpZnlTZW50ZW5jZVJhbmdlRm9yVGV4dE1hcmtlcihwcmVNYXJrZXIsIHRl
eHRNYXJrZXIsIG9iaikgeworICAgICAgICAgICAgdmFyIG1hcmtlclJhbmdlID0gb2JqLnRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMocHJlTWFya2VyLCB0ZXh0TWFya2VyKTsKKyAgICAgICAgICAg
IHZhciBjdXJyZW50Q2hhcmFjdGVyID0gcmVwbGFjZUF0dGFjaG1lbnRJblN0cmluZyhvYmouc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSk7CisgICAgICAgICAgICBkZWJ1Zygi
Q3VycmVudCBjaGFyYWN0ZXIgaXM6ICIgKyBjdXJyZW50Q2hhcmFjdGVyKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgdmFyIHJhbmdlID0gb2JqLnNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9y
VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAgICAgIHZhciBzZW50ZW5jZSA9IHJlcGxh
Y2VBdHRhY2htZW50SW5TdHJpbmcob2JqLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkp
OworICAgICAgICAgICAgZGVidWcoIkN1cnJlbnQgc2VudGVuY2UgaXM6ICIgKyBzZW50ZW5jZSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBwcmVTdGFydCA9IG9iai5wcmV2aW91c1Nl
bnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAg
ICAgIHZhciBuZXh0RW5kID0gb2JqLm5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyKHRleHRNYXJrZXIpOworICAgICAgICAgICAgdmFyIHByZUFuZE5leHRTZW50ZW5jZVJhbmdl
ID0gb2JqLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJlU3RhcnQsIG5leHRFbmQpOworICAg
ICAgICAgICAgdmFyIHByZUFuZE5leHRTZW50ZW5jZSA9IHJlcGxhY2VBdHRhY2htZW50SW5TdHJp
bmcob2JqLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShwcmVBbmROZXh0U2VudGVuY2VSYW5nZSkp
OworICAgICAgICAgICAgZGVidWcoIlByZSBzZW50ZW5jZSBzdGFydCB0byBuZXh0IHNlbnRlbmNl
IGVuZDogIiArIHByZUFuZE5leHRTZW50ZW5jZSArICJcbiIpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBmdW5jdGlvbiB2ZXJpZnlTZW50ZW5jZXMob2JqLCBzdGFydE1hcmtlciwgc2Vu
dGVuY2VDb3VudCkgeworICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBzdGFydE1hcmtlcjsKKyAg
ICAgICAgICAgIHZhciBpID0gMDsKKyAgICAgICAgICAgIHdoaWxlKGkgPCBzZW50ZW5jZUNvdW50
KSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IG9iai5uZXh0U2VudGVuY2VFbmRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlcihjdXJyZW50KTsKKyAgICAgICAgICAgICAgICB2YXIgY3VyclJhbmdl
ID0gb2JqLnNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihjdXJyZW50KTsKKyAg
ICAgICAgICAgICAgICB2YXIgY3VyclNlbnRlbmNlID0gb2JqLnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShjdXJyUmFuZ2UpOworICAgICAgICAgICAgICAgIGRlYnVnKCJTZW50ZW5jZTogIiArIGN1
cnJTZW50ZW5jZSk7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyBCYWNrd2FyZHMuCisgICAgICAgICAgICBpID0gMDsKKyAg
ICAgICAgICAgIHdoaWxlKGkgPCBzZW50ZW5jZUNvdW50KSB7CisgICAgICAgICAgICAgICAgY3Vy
cmVudCA9IG9iai5wcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihj
dXJyZW50KTsKKyAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IG9iai5uZXh0VGV4dE1hcmtlcihj
dXJyZW50KTsKKyAgICAgICAgICAgICAgICB2YXIgY3VyclJhbmdlID0gb2JqLnNlbnRlbmNlVGV4
dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihuZXh0KTsKKyAgICAgICAgICAgICAgICB2YXIgY3Vy
clNlbnRlbmNlID0gb2JqLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShjdXJyUmFuZ2UpOworICAg
ICAgICAgICAgICAgIGRlYnVnKCJTZW50ZW5jZTogIiArIGN1cnJTZW50ZW5jZSk7CisgICAgICAg
ICAgICAgICAgaSsrOworICAgICAgICAgICAgfQorICAgICAgICB9ICAgIAorICAgIH0KKzwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271545</attachid>
            <date>2016-02-17 00:34:07 -0800</date>
            <delta_ts>2016-02-17 10:16:49 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>52270</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE2LTAyLTE3ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBzZW50ZW5jZSBy
ZWxhdGVkIHRleHQgbWFya2VyIGZ1bmN0aW9ucyB1c2luZyBUZXh0SXRlcmF0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDMxMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzaW5nIENoYXJhY3Rlck9m
ZnNldCB0byBpbXBsZW1lbnQgc2VudGVuY2UgcmVsYXRlZCB0ZXh0IG1hcmtlciBjYWxscy4gUmV1
c2VkCisgICAgICAgIGxvZ2ljIGZyb20gVmlzaWJsZVVuaXRzIGNsYXNzLiBBbHNvIGZpeGVkIGFu
IGlzc3VlIHdoZXJlIHBhcmFncmFwaCBuYXZpZ2F0aW9uCisgICAgICAgIHNob3VsZCBza2lwIHBy
ZWNlZGluZyBhbmQgZm9sbG93aW5nIEJSIG5vZGVzLgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2li
aWxpdHkvbWFjL3RleHQtbWFya2VyLXNlbnRlbmNlLW5hdi5odG1sCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXROb2Rl
QW5kT2Zmc2V0Rm9yUmVwbGFjZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFJhbmdlU3Rh
cnRPckVuZFdpdGhDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9yTm9kZUFuZE9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpwcmV2aW91c0NoYXJhY3Rlck9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpzdGFydENoYXJhY3Rlck9mZnNldE9mV29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplbmRDaGFyYWN0ZXJPZmZzZXRPZldvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cHJldmlvdXNXb3JkU3RhcnRDaGFyYWN0ZXJP
ZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bGVmdFdvcmRSYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyaWdodFdvcmRSYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXJCZWZvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6Y2hhcmFjdGVyT2Zmc2V0Tm9kZUlzQlIpOgorICAgICAgICAoV2ViQ29yZTo6cGFy
ZW50RWRpdGluZ0JvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5l
eHRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwcmV2aW91c0Jv
dW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBhcmFncmFwaEZvckNo
YXJhY3Rlck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpuZXh0UGFy
YWdyYXBoRW5kQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6c3RhcnRDaGFyYWN0ZXJPZmZzZXRPZlNlbnRlbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuZENoYXJhY3Rlck9mZnNldE9mU2VudGVu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c2VudGVuY2VGb3JDaGFyYWN0
ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bmV4dFNlbnRlbmNl
RW5kQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBy
ZXZpb3VzU2VudGVuY2VTdGFydENoYXJhY3Rlck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpyb290QVhFZGl0YWJsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
c3RhcnRXb3JkQm91bmRhcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZW5kV29yZEJv
dW5kYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5leHRX
b3JkQm91bmRhcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
cHJldmlvdXNXb3JkQm91bmRhcnkpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgor
ICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0
YXJ0V29yZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZXb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OmVuZFdvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFNl
bnRlbmNlQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPZlNlbnRlbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmVuZFNlbnRlbmNlQm91bmRhcnkpOgorICAgICAgICAqIGVkaXRpbmcv
VmlzaWJsZVVuaXRzLmg6CisKIDIwMTYtMDItMTMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBbU1ZHIC0+IE9URiBDb252ZXJ0ZXJdIFNW
RyBmb250cyBkcmF3biBpbnRvIEltYWdlQnVmZmVycyBhcmUgaW52aXNpYmxlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9u
IDE5NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MDksNyArMTYwOSw3IEBAIHN0YXRpYyBOb2RlKiByZXNl
dE5vZGVBbmRPZmZzZXRGb3JSZXBsYWMKICAgICByZXR1cm4gcmVwbGFjZWROb2RlLT5wYXJlbnRO
b2RlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldFJhbmdlU3RhcnRPckVuZFdpdGhDaGFyYWN0ZXJP
ZmZzZXQoUmVmUHRyPFJhbmdlPiByYW5nZSwgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZz
ZXQsIGJvb2wgaXNTdGFydCwgRXhjZXB0aW9uQ29kZSYgZWMpCitzdGF0aWMgdm9pZCBzZXRSYW5n
ZVN0YXJ0T3JFbmRXaXRoQ2hhcmFjdGVyT2Zmc2V0KFJlZlB0cjxSYW5nZT4gcmFuZ2UsIGNvbnN0
IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0LCBib29sIGlzU3RhcnQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGlmICghcmFuZ2UpIHsKICAgICAgICAgZWMgPSBSYW5nZUVycm9y
OwpAQCAtMTczOCwxMSArMTczOCwxMSBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6
Y2hhcmFjdGVyCiAgICAgICAgICAgICAgICAgY2hhck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZv
ck5vZGVBbmRPZmZzZXQoKmRvbU5vZGUsIDAsIFRyYXZlcnNlT3B0aW9uVG9Ob2RlRW5kKTsKICAg
ICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBDaGFyYWN0ZXJPZmZzZXQo
KTsKLSAgICAgICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAgaWYgKGNoYXJPZmZzZXQu
b2Zmc2V0ID09IG9mZnNldCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBpZiAob2Zmc2V0ID4gMCkKLSAgICAgICAgICAgIGNoYXJPZmZzZXQgPSBjaGFyYWN0ZXJP
ZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KCpjaGFyT2Zmc2V0Lm5vZGUsIGNoYXJPZmZzZXQub2Zmc2V0
IC0gb2Zmc2V0KTsKKyAgICAgICAgICAgIGNoYXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JO
b2RlQW5kT2Zmc2V0KCpjaGFyT2Zmc2V0Lm5vZGUsIGNoYXJPZmZzZXQub2Zmc2V0IC0gb2Zmc2V0
LCBUcmF2ZXJzZU9wdGlvbkluY2x1ZGVTdGFydCk7CiAgICAgICAgIHJldHVybiBjaGFyT2Zmc2V0
OwogICAgIH0KICAgICAKQEAgLTE5MTksMzMgKzE5MTksNiBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhP
YmplY3RDYWNoZTo6cHJldmlvdXNDCiAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldEZvck5vZGVB
bmRPZmZzZXQoKmNoYXJhY3Rlck9mZnNldC5ub2RlLCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0IC0g
MSwgaWdub3JlU3RhcnQgPyBUcmF2ZXJzZU9wdGlvbkRlZmF1bHQgOiBUcmF2ZXJzZU9wdGlvbklu
Y2x1ZGVTdGFydCk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBzdGFydFdvcmRCb3VuZGFyeShTdHJp
bmdWaWV3IHRleHQsIHVuc2lnbmVkIG9mZnNldCwgQm91bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxh
YmlsaXR5IG1heUhhdmVNb3JlQ29udGV4dCwgYm9vbCYgbmVlZE1vcmVDb250ZXh0KQotewotICAg
IEFTU0VSVChvZmZzZXQpOwotICAgIGlmIChtYXlIYXZlTW9yZUNvbnRleHQgJiYgIXN0YXJ0T2ZM
YXN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0LnN1YnN0cmluZygwLCBvZmZzZXQpKSkgewotICAg
ICAgICBuZWVkTW9yZUNvbnRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0g
ICAgbmVlZE1vcmVDb250ZXh0ID0gZmFsc2U7Ci0gICAgaW50IHN0YXJ0LCBlbmQ7Ci0gICAgVTE2
X0JBQ0tfMSh0ZXh0LCAwLCBvZmZzZXQpOwotICAgIGZpbmRXb3JkQm91bmRhcnkodGV4dCwgb2Zm
c2V0LCAmc3RhcnQsICZlbmQpOwotICAgIHJldHVybiBzdGFydDsKLX0KLQotc3RhdGljIHVuc2ln
bmVkIGVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVkIG9mZnNldCwgQm91
bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5IG1heUhhdmVNb3JlQ29udGV4dCwgYm9vbCYg
bmVlZE1vcmVDb250ZXh0KQotewotICAgIEFTU0VSVChvZmZzZXQgPD0gdGV4dC5sZW5ndGgoKSk7
Ci0gICAgaWYgKG1heUhhdmVNb3JlQ29udGV4dCAmJiBlbmRPZkZpcnN0V29yZEJvdW5kYXJ5Q29u
dGV4dCh0ZXh0LnN1YnN0cmluZyhvZmZzZXQpKSA9PSB0ZXh0Lmxlbmd0aCgpIC0gb2Zmc2V0KSB7
Ci0gICAgICAgIG5lZWRNb3JlQ29udGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiB0ZXh0Lmxl
bmd0aCgpOwotICAgIH0KLSAgICBuZWVkTW9yZUNvbnRleHQgPSBmYWxzZTsKLSAgICBpbnQgZW5k
OwotICAgIGZpbmRFbmRXb3JkQm91bmRhcnkodGV4dCwgb2Zmc2V0LCAmZW5kKTsKLSAgICByZXR1
cm4gZW5kOwotfQotCiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6c3RhcnRDaGFyYWN0
ZXJPZmZzZXRPZldvcmQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQsIEVX
b3JkU2lkZSBzaWRlKQogewogICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkpCkBAIC0x
OTYyLDcgKzE5MzUsNyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6c3RhcnRDaGFy
CiAgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyT2Zmc2V0OwogICAgIH0KICAgICAKLSAgICBy
ZXR1cm4gcHJldmlvdXNXb3JkQm91bmRhcnkoYywgc3RhcnRXb3JkQm91bmRhcnkpOworICAgIHJl
dHVybiBwcmV2aW91c0JvdW5kYXJ5KGMsIHN0YXJ0V29yZEJvdW5kYXJ5KTsKIH0KIAogQ2hhcmFj
dGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmVuZENoYXJhY3Rlck9mZnNldE9mV29yZChjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCwgRVdvcmRTaWRlIHNpZGUpCkBAIC0xOTgx
LDcgKzE5NTQsNyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFjCiAg
ICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyT2Zmc2V0OwogICAgIH0KICAgICAKLSAgICByZXR1
cm4gbmV4dFdvcmRCb3VuZGFyeShjLCBlbmRXb3JkQm91bmRhcnkpOworICAgIHJldHVybiBuZXh0
Qm91bmRhcnkoYywgZW5kV29yZEJvdW5kYXJ5KTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2Jq
ZWN0Q2FjaGU6OnByZXZpb3VzV29yZFN0YXJ0Q2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rl
ck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQpAQCAtMjAxMCw3ICsxOTgzLDcgQEAgQ2hhcmFjdGVy
T2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRXb3JkRQogCiBSZWZQdHI8UmFuZ2U+IEFYT2JqZWN0
Q2FjaGU6OmxlZnRXb3JkUmFuZ2UoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZz
ZXQpCiB7Ci0gICAgQ2hhcmFjdGVyT2Zmc2V0IHN0YXJ0ID0gcHJldmlvdXNXb3JkU3RhcnRDaGFy
YWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQg
PSBzdGFydENoYXJhY3Rlck9mZnNldE9mV29yZChjaGFyYWN0ZXJPZmZzZXQsIExlZnRXb3JkSWZP
bkJvdW5kYXJ5KTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kID0gZW5kQ2hhcmFjdGVyT2Zmc2V0
T2ZXb3JkKHN0YXJ0KTsKICAgICByZXR1cm4gcmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZz
ZXRzKHN0YXJ0LCBlbmQpOwogfQpAQCAtMjAxOCw3ICsxOTkxLDcgQEAgUmVmUHRyPFJhbmdlPiBB
WE9iamVjdENhY2hlOjpsZWZ0V29yZFJhbgogUmVmUHRyPFJhbmdlPiBBWE9iamVjdENhY2hlOjpy
aWdodFdvcmRSYW5nZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsK
ICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBzdGFydENoYXJhY3Rlck9mZnNldE9mV29yZChj
aGFyYWN0ZXJPZmZzZXQpOwotICAgIENoYXJhY3Rlck9mZnNldCBlbmQgPSBuZXh0V29yZEVuZENo
YXJhY3Rlck9mZnNldChzdGFydCk7CisgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGVuZENoYXJh
Y3Rlck9mZnNldE9mV29yZChzdGFydCk7CiAgICAgcmV0dXJuIHJhbmdlRm9yVW5vcmRlcmVkQ2hh
cmFjdGVyT2Zmc2V0cyhzdGFydCwgZW5kKTsKIH0KIApAQCAtMjA0Myw2ICsyMDE2LDE0IEBAIFVD
aGFyMzIgQVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyQmVmb3JlKGMKIHsKICAgICByZXR1cm4gY2hh
cmFjdGVyRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CiB9CisKK3N0YXRpYyBi
b29sIGNoYXJhY3Rlck9mZnNldE5vZGVJc0JSKGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFj
dGVyT2Zmc2V0KQoreworICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gY2hhcmFjdGVyT2Zmc2V0Lm5vZGUtPmhh
c1RhZ05hbWUoYnJUYWcpOworfQogICAgIAogc3RhdGljIE5vZGUqIHBhcmVudEVkaXRpbmdCb3Vu
ZGFyeShOb2RlKiBub2RlKQogewpAQCAtMjA2MCw3ICsyMDQxLDcgQEAgc3RhdGljIE5vZGUqIHBh
cmVudEVkaXRpbmdCb3VuZGFyeShOb2RlKgogICAgIHJldHVybiBib3VuZGFyeTsKIH0KIAotQ2hh
cmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRXb3JkQm91bmRhcnkoQ2hhcmFjdGVyT2Zm
c2V0JiBjaGFyYWN0ZXJPZmZzZXQsIEJvdW5kYXJ5U2VhcmNoRnVuY3Rpb24gc2VhcmNoRnVuY3Rp
b24pCitDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6bmV4dEJvdW5kYXJ5KGNvbnN0IENo
YXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0LCBCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uIHNl
YXJjaEZ1bmN0aW9uKQogewogICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsKQEAgLTIwOTIsMTMgKzIwNzMsMTggQEAgQ2hh
cmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRXb3JkQgogICAgIAogICAgIGlmIChpdC5h
dEVuZCgpICYmIG5leHQgPT0gc3RyaW5nLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGVuZDsKKyAg
ICAKKyAgICAvLyBUaGUgZW5kU2VudGVuY2VCb3VuZGFyeSBmdW5jdGlvbiB3aWxsIGluY2x1ZGUg
YSBsaW5lIGJyZWFrIGF0IHRoZSBlbmQgb2YgdGhlIHNlbnRlbmNlLgorICAgIGlmIChzZWFyY2hG
dW5jdGlvbiA9PSBlbmRTZW50ZW5jZUJvdW5kYXJ5ICYmIHN0cmluZ1tuZXh0IC0gMV0gPT0gJ1xu
JykKKyAgICAgICAgbmV4dC0tOworICAgIAogICAgIGlmIChuZXh0ID4gcHJlZml4TGVuZ3RoKQog
ICAgICAgICByZXR1cm4gY2hhcmFjdGVyT2Zmc2V0Rm9yTm9kZUFuZE9mZnNldCgqY2hhcmFjdGVy
T2Zmc2V0Lm5vZGUsIGNoYXJhY3Rlck9mZnNldC5vZmZzZXQgKyBuZXh0IC0gcHJlZml4TGVuZ3Ro
KTsKICAgICAKICAgICByZXR1cm4gY2hhcmFjdGVyT2Zmc2V0OwogfQogCi1DaGFyYWN0ZXJPZmZz
ZXQgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNXb3JkQm91bmRhcnkoQ2hhcmFjdGVyT2Zmc2V0JiBj
aGFyYWN0ZXJPZmZzZXQsIEJvdW5kYXJ5U2VhcmNoRnVuY3Rpb24gc2VhcmNoRnVuY3Rpb24pCitD
aGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNCb3VuZGFyeShjb25zdCBDaGFy
YWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCwgQm91bmRhcnlTZWFyY2hGdW5jdGlvbiBzZWFy
Y2hGdW5jdGlvbikKIHsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7CkBAIC0yMTQxLDYgKzIxMjcsOSBAQCBDaGFyYWN0
ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNXCiAgICAgfQogICAgIAogICAgIGludCBj
aGFyYWN0ZXJDb3VudCA9IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQgLSAoc3RyaW5nLnNpemUoKSAt
IHN1ZmZpeExlbmd0aCAtIG5leHQpOworICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZ28gdG8gdGhl
IHByZXZpb3VzIG5vZGUgaWYgdGhlIG5vZGUgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgbmV3IGxpbmUu
CisgICAgaWYgKGNoYXJhY3RlckNvdW50IDwgMCAmJiAoY2hhcmFjdGVyT2Zmc2V0Tm9kZUlzQlIo
Y2hhcmFjdGVyT2Zmc2V0KSB8fCBzdHJpbmdbc3RyaW5nLnNpemUoKSAtIDFdID09ICdcbicpKQor
ICAgICAgICBjaGFyYWN0ZXJDb3VudCA9IDA7CiAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldEZv
ck5vZGVBbmRPZmZzZXQoKmNoYXJhY3Rlck9mZnNldC5ub2RlLCBjaGFyYWN0ZXJDb3VudCwgVHJh
dmVyc2VPcHRpb25JbmNsdWRlU3RhcnQpOwogfQogCkBAIC0yMTk4LDcgKzIxODcsNyBAQCBDaGFy
YWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFjCiBSZWZQdHI8UmFuZ2U+IEFYT2Jq
ZWN0Q2FjaGU6OnBhcmFncmFwaEZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnQgPSBzdGFy
dENoYXJhY3Rlck9mZnNldE9mUGFyYWdyYXBoKGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgQ2hhcmFj
dGVyT2Zmc2V0IGVuZCA9IGVuZENoYXJhY3Rlck9mZnNldE9mUGFyYWdyYXBoKGNoYXJhY3Rlck9m
ZnNldCk7CisgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGVuZENoYXJhY3Rlck9mZnNldE9mUGFy
YWdyYXBoKHN0YXJ0KTsKICAgICAKICAgICByZXR1cm4gcmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0
ZXJPZmZzZXRzKHN0YXJ0LCBlbmQpOwogfQpAQCAtMjIwNiwxMyArMjE5NSw2MCBAQCBSZWZQdHI8
UmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnBhcmFncmFwaEZvCiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmpl
Y3RDYWNoZTo6bmV4dFBhcmFncmFwaEVuZENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICAvLyBtYWtlIHN1cmUgd2UgbW92ZSBvZmYg
b2YgYSBwYXJhZ3JhcGggZW5kCi0gICAgcmV0dXJuIGVuZENoYXJhY3Rlck9mZnNldE9mUGFyYWdy
YXBoKG5leHRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KSk7CisgICAgQ2hhcmFjdGVy
T2Zmc2V0IG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CisgICAg
CisgICAgLy8gV2Ugc2hvdWxkIHNraXAgdGhlIGZvbGxvd2luZyBCUiBub2RlLgorICAgIGlmIChj
aGFyYWN0ZXJPZmZzZXROb2RlSXNCUihuZXh0KSAmJiAhY2hhcmFjdGVyT2Zmc2V0Tm9kZUlzQlIo
Y2hhcmFjdGVyT2Zmc2V0KSkKKyAgICAgICAgbmV4dCA9IG5leHRDaGFyYWN0ZXJPZmZzZXQobmV4
dCk7CisgICAgCisgICAgcmV0dXJuIGVuZENoYXJhY3Rlck9mZnNldE9mUGFyYWdyYXBoKG5leHQp
OwogfQogCiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNQYXJhZ3JhcGhT
dGFydENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNl
dCkKIHsKICAgICAvLyBtYWtlIHN1cmUgd2UgbW92ZSBvZmYgb2YgYSBwYXJhZ3JhcGggc3RhcnQK
LSAgICByZXR1cm4gc3RhcnRDaGFyYWN0ZXJPZmZzZXRPZlBhcmFncmFwaChwcmV2aW91c0NoYXJh
Y3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQsIGZhbHNlKSk7CisgICAgQ2hhcmFjdGVyT2Zmc2V0
IHByZXZpb3VzID0gcHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0LCBmYWxz
ZSk7CisgICAgCisgICAgLy8gV2Ugc2hvdWxkIHNraXAgdGhlIHByZWNlZGluZyBCUiBub2RlLgor
ICAgIGlmIChjaGFyYWN0ZXJPZmZzZXROb2RlSXNCUihwcmV2aW91cykgJiYgIWNoYXJhY3Rlck9m
ZnNldE5vZGVJc0JSKGNoYXJhY3Rlck9mZnNldCkpCisgICAgICAgIHByZXZpb3VzID0gcHJldmlv
dXNDaGFyYWN0ZXJPZmZzZXQocHJldmlvdXMsIGZhbHNlKTsKKyAgICAKKyAgICByZXR1cm4gc3Rh
cnRDaGFyYWN0ZXJPZmZzZXRPZlBhcmFncmFwaChwcmV2aW91cyk7Cit9CisKK0NoYXJhY3Rlck9m
ZnNldCBBWE9iamVjdENhY2hlOjpzdGFydENoYXJhY3Rlck9mZnNldE9mU2VudGVuY2UoY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCit7CisgICAgcmV0dXJuIHByZXZpb3Vz
Qm91bmRhcnkoY2hhcmFjdGVyT2Zmc2V0LCBzdGFydFNlbnRlbmNlQm91bmRhcnkpOworfQorCitD
aGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZTZW50ZW5j
ZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK3sKKyAgICByZXR1cm4g
bmV4dEJvdW5kYXJ5KGNoYXJhY3Rlck9mZnNldCwgZW5kU2VudGVuY2VCb3VuZGFyeSk7Cit9CisK
K1JlZlB0cjxSYW5nZT4gQVhPYmplY3RDYWNoZTo6c2VudGVuY2VGb3JDaGFyYWN0ZXJPZmZzZXQo
Y29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCit7CisgICAgQ2hhcmFjdGVy
T2Zmc2V0IHN0YXJ0ID0gc3RhcnRDaGFyYWN0ZXJPZmZzZXRPZlNlbnRlbmNlKGNoYXJhY3Rlck9m
ZnNldCk7CisgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGVuZENoYXJhY3Rlck9mZnNldE9mU2Vu
dGVuY2Uoc3RhcnQpOworICAgIHJldHVybiByYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNl
dHMoc3RhcnQsIGVuZCk7Cit9CisKK0NoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpuZXh0
U2VudGVuY2VFbmRDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0
ZXJPZmZzZXQpCit7CisgICAgLy8gTWFrZSBzdXJlIHdlIG1vdmUgb2ZmIG9mIGEgc2VudGVuY2Ug
ZW5kLgorICAgIHJldHVybiBlbmRDaGFyYWN0ZXJPZmZzZXRPZlNlbnRlbmNlKG5leHRDaGFyYWN0
ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KSk7Cit9CisKK0NoYXJhY3Rlck9mZnNldCBBWE9iamVj
dENhY2hlOjpwcmV2aW91c1NlbnRlbmNlU3RhcnRDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFj
dGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCit7CisgICAgLy8gTWFrZSBzdXJlIHdlIG1vdmUg
b2ZmIG9mIGEgc2VudGVuY2Ugc3RhcnQuCisgICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzID0g
cHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0LCBmYWxzZSk7CisgICAgCisg
ICAgLy8gV2Ugc2hvdWxkIHNraXAgdGhlIHByZWNlZGluZyBCUiBub2RlLgorICAgIGlmICghcHJl
dmlvdXMuaXNOdWxsKCkgJiYgcHJldmlvdXMubm9kZS0+aGFzVGFnTmFtZShiclRhZykgJiYgIWNo
YXJhY3Rlck9mZnNldC5ub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSkKKyAgICAgICAgcHJldmlvdXMg
PSBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChwcmV2aW91cywgZmFsc2UpOworICAgIAorICAgIHJl
dHVybiBzdGFydENoYXJhY3Rlck9mZnNldE9mU2VudGVuY2UocHJldmlvdXMpOwogfQogCiBjb25z
dCBFbGVtZW50KiBBWE9iamVjdENhY2hlOjpyb290QVhFZGl0YWJsZUVsZW1lbnQoY29uc3QgTm9k
ZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5oCShyZXZpc2lvbiAxOTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYgKzIxNCwxMSBAQCBwdWJs
aWM6CiAgICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhGb3JDaGFyYWN0ZXJPZmZzZXQoY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHRQYXJhZ3JhcGhFbmRD
aGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgQ2hhcmFjdGVyT2Zm
c2V0IHByZXZpb3VzUGFyYWdyYXBoU3RhcnRDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVy
T2Zmc2V0Jik7CisgICAgCisgICAgLy8gU2VudGVuY2UKKyAgICBSZWZQdHI8UmFuZ2U+IHNlbnRl
bmNlRm9yQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIENoYXJh
Y3Rlck9mZnNldCBuZXh0U2VudGVuY2VFbmRDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVy
T2Zmc2V0Jik7CisgICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzU2VudGVuY2VTdGFydENoYXJh
Y3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKIAogICAgIGVudW0gQVhOb3RpZmlj
YXRpb24gewogICAgICAgICBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkLApAQCAtMzE3LDEyICsz
MjIsMTQgQEAgcHJvdGVjdGVkOgogICAgIFVDaGFyMzIgY2hhcmFjdGVyQmVmb3JlKGNvbnN0IENo
YXJhY3Rlck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9mZnNldCBzdGFydE9yRW5kQ2hhcmFjdGVy
T2Zmc2V0Rm9yUmFuZ2UoUmVmUHRyPFJhbmdlPiwgYm9vbCk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0
IGNoYXJhY3Rlck9mZnNldEZvck5vZGVBbmRPZmZzZXQoTm9kZSYsIGludCwgVHJhdmVyc2VPcHRp
b24gPSBUcmF2ZXJzZU9wdGlvbkRlZmF1bHQpOwotICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91
c1dvcmRCb3VuZGFyeShDaGFyYWN0ZXJPZmZzZXQmLCBCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uKTsK
LSAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dFdvcmRCb3VuZGFyeShDaGFyYWN0ZXJPZmZzZXQmLCBC
b3VuZGFyeVNlYXJjaEZ1bmN0aW9uKTsKKyAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNCb3Vu
ZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uKTsKKyAg
ICBDaGFyYWN0ZXJPZmZzZXQgbmV4dEJvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIEJv
dW5kYXJ5U2VhcmNoRnVuY3Rpb24pOwogICAgIENoYXJhY3Rlck9mZnNldCBzdGFydENoYXJhY3Rl
ck9mZnNldE9mV29yZChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBFV29yZFNpZGUgPSBSaWdodFdv
cmRJZk9uQm91bmRhcnkpOwogICAgIENoYXJhY3Rlck9mZnNldCBlbmRDaGFyYWN0ZXJPZmZzZXRP
ZldvcmQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgRVdvcmRTaWRlID0gUmlnaHRXb3JkSWZPbkJv
dW5kYXJ5KTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnRDaGFyYWN0ZXJPZmZzZXRPZlBhcmFn
cmFwaChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUg
PSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZENo
YXJhY3Rlck9mZnNldE9mUGFyYWdyYXBoKGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIEVkaXRpbmdC
b3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICBD
aGFyYWN0ZXJPZmZzZXQgc3RhcnRDaGFyYWN0ZXJPZmZzZXRPZlNlbnRlbmNlKGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYpOworICAgIENoYXJhY3Rlck9mZnNldCBlbmRDaGFyYWN0ZXJPZmZzZXRPZlNl
bnRlbmNlKGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogCiBwcml2YXRlOgogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHJvb3RXZWJBcmVhKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQxMTIsOSArNDExMiwxMiBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6KE5TU3RyCiAgICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzpAIkFYU2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKLSAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25G
b3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdl
IHZwUmFuZ2UgPSBtX29iamVjdC0+c2VudGVuY2VGb3JQb3NpdGlvbih2aXNpYmxlUG9zKTsKLSAg
ICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zOnZw
UmFuZ2Uuc3RhcnQgZW5kUG9zaXRpb246dnBSYW5nZS5lbmRdOworICAgICAgICBBWE9iamVjdENh
Y2hlKiBjYWNoZSA9IG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgICAgIGlmICghY2Fj
aGUpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hh
cmFjdGVyT2Zmc2V0ID0gW3NlbGYgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcjp0ZXh0TWFy
a2VyXTsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGNhY2hlLT5zZW50ZW5jZUZvckNo
YXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAgICAgICByZXR1cm4gW3NlbGYgdGV4
dE1hcmtlclJhbmdlRnJvbVJhbmdlOnJhbmdlXTsKICAgICB9CiAgICAgCiAgICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0
TWFya2VyIl0pIHsKQEAgLTQxNTUsMTggKzQxNTgsMzAgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgIH0KICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0p
IHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIHJldHVybiBbc2VsZiB0
ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5uZXh0U2VudGVuY2VFbmRQb3Np
dGlvbih2aXNpYmxlUG9zKV07CisgICAgICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gbV9vYmpl
Y3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAgIHJl
dHVybiBuaWw7CisgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBbc2Vs
ZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOworICAgICAgICBDaGFy
YWN0ZXJPZmZzZXQgbmV4dEVuZCA9IGNhY2hlLT5uZXh0U2VudGVuY2VFbmRDaGFyYWN0ZXJPZmZz
ZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JD
aGFyYWN0ZXJPZmZzZXQ6bmV4dEVuZF07CiAgICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRl
IGlzRXF1YWxUb1N0cmluZzpAIkFYUHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXIiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxm
IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgcmV0
dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3QtPnByZXZpb3Vz
U2VudGVuY2VTdGFydFBvc2l0aW9uKHZpc2libGVQb3MpXTsKKyAgICAgICAgQVhPYmplY3RDYWNo
ZSogY2FjaGUgPSBtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hl
KQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJh
Y3Rlck9mZnNldCA9IFtzZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4dE1hcmtl
cl07CisgICAgICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91c1N0YXJ0ID0gY2FjaGUtPnByZXZp
b3VzU2VudGVuY2VTdGFydENoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAgICAg
ICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpwcmV2aW91c1N0YXJ0
XTsKICAgICB9CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhO
ZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJr
ZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNp
YmxlUG9zaXRpb246bV9vYmplY3QtPm5leHRQYXJhZ3JhcGhFbmRQb3NpdGlvbih2aXNpYmxlUG9z
KV07CisgICAgICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gbV9vYmplY3QtPmF4T2JqZWN0Q2Fj
aGUoKTsKKyAgICAgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAg
ICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBbc2VsZiBjaGFyYWN0ZXJPZmZz
ZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOworICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4
dEVuZCA9IGNhY2hlLT5uZXh0UGFyYWdyYXBoRW5kQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9m
ZnNldCk7CisgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0
Om5leHRFbmRdOwogICAgIH0KICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJp
bmc6QCJBWFByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCShyZXZpc2lvbiAx
OTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY1OCw3ICs2NTgsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRC
b3VuZGFyeShjb25zCiAKIC8vIC0tLS0tLS0tLQogCi1zdGF0aWMgdW5zaWduZWQgc3RhcnRXb3Jk
Qm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5U2VhcmNo
Q29udGV4dEF2YWlsYWJpbGl0eSBtYXlIYXZlTW9yZUNvbnRleHQsIGJvb2wmIG5lZWRNb3JlQ29u
dGV4dCkKK3Vuc2lnbmVkIHN0YXJ0V29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWdu
ZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHkgbWF5SGF2ZU1vcmVD
b250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG9mZnNldCk7CiAg
ICAgaWYgKG1heUhhdmVNb3JlQ29udGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250
ZXh0KHRleHQuc3Vic3RyaW5nKDAsIG9mZnNldCkpKSB7CkBAIC02ODksNyArNjg5LDcgQEAgVmlz
aWJsZVBvc2l0aW9uIHN0YXJ0T2ZXb3JkKGNvbnN0IFZpc2libAogICAgIHJldHVybiBwcmV2aW91
c0JvdW5kYXJ5KHAsIHN0YXJ0V29yZEJvdW5kYXJ5KTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGVu
ZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVkIG9mZnNldCwgQm91bmRhcnlT
ZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5IG1heUhhdmVNb3JlQ29udGV4dCwgYm9vbCYgbmVlZE1v
cmVDb250ZXh0KQordW5zaWduZWQgZW5kV29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5z
aWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHkgbWF5SGF2ZU1v
cmVDb250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG9mZnNldCA8
PSB0ZXh0Lmxlbmd0aCgpKTsKICAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmIGVuZE9mRmly
c3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQuc3Vic3RyaW5nKG9mZnNldCkpID09IHRleHQubGVu
Z3RoKCkgLSBvZmZzZXQpIHsKQEAgLTEwOTYsNyArMTA5Niw3IEBAIFZpc2libGVQb3NpdGlvbiBu
ZXh0TGluZVBvc2l0aW9uKGNvbnN0IFYKIAogLy8gLS0tLS0tLS0tCiAKLXN0YXRpYyB1bnNpZ25l
ZCBzdGFydFNlbnRlbmNlQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwgQm91bmRh
cnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5LCBib29sJikKK3Vuc2lnbmVkIHN0YXJ0U2VudGVu
Y2VCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVkLCBCb3VuZGFyeVNlYXJjaENvbnRl
eHRBdmFpbGFiaWxpdHksIGJvb2wmKQogewogICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIGZ1
bmN0aW9uIGNhbiByZXR1cm4gLTE7IHdlIGRvbid0IGhhbmRsZSB0aGF0LgogICAgIHJldHVybiB0
ZXh0QnJlYWtQcmVjZWRpbmcoc2VudGVuY2VCcmVha0l0ZXJhdG9yKHRleHQpLCB0ZXh0Lmxlbmd0
aCgpKTsKQEAgLTExMDcsNyArMTEwNyw3IEBAIFZpc2libGVQb3NpdGlvbiBzdGFydE9mU2VudGVu
Y2UoY29uc3QgVmkKICAgICByZXR1cm4gcHJldmlvdXNCb3VuZGFyeShwb3NpdGlvbiwgc3RhcnRT
ZW50ZW5jZUJvdW5kYXJ5KTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGVuZFNlbnRlbmNlQm91bmRh
cnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwgQm91bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxh
YmlsaXR5LCBib29sJikKK3Vuc2lnbmVkIGVuZFNlbnRlbmNlQm91bmRhcnkoU3RyaW5nVmlldyB0
ZXh0LCB1bnNpZ25lZCwgQm91bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5LCBib29sJikK
IHsKICAgICByZXR1cm4gdGV4dEJyZWFrTmV4dChzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCkp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCShyZXZpc2lvbiAx
OTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTIsNiArMTEyLDEwIEBAIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8UmFu
Z2U+IHJhbmdlRXgKIC8vIGhlbHBlciBmdW5jdGlvbgogZW51bSBCb3VuZGFyeVNlYXJjaENvbnRl
eHRBdmFpbGFiaWxpdHkgeyBEb250SGF2ZU1vcmVDb250ZXh0LCBNYXlIYXZlTW9yZUNvbnRleHQg
fTsKIHR5cGVkZWYgdW5zaWduZWQgKCpCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uKShTdHJpbmdWaWV3
LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2YWlsYWJpbGl0eSwgYm9v
bCYgbmVlZE1vcmVDb250ZXh0KTsKK3Vuc2lnbmVkIHN0YXJ0V29yZEJvdW5kYXJ5KFN0cmluZ1Zp
ZXcsIHVuc2lnbmVkLCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHksIGJvb2wmKTsK
K3Vuc2lnbmVkIGVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3LCB1bnNpZ25lZCwgQm91bmRhcnlT
ZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5LCBib29sJik7Cit1bnNpZ25lZCBzdGFydFNlbnRlbmNl
Qm91bmRhcnkoU3RyaW5nVmlldywgdW5zaWduZWQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2YWls
YWJpbGl0eSwgYm9vbCYpOwordW5zaWduZWQgZW5kU2VudGVuY2VCb3VuZGFyeShTdHJpbmdWaWV3
LCB1bnNpZ25lZCwgQm91bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5LCBib29sJik7CiB1
bnNpZ25lZCBzdWZmaXhMZW5ndGhGb3JSYW5nZShSZWZQdHI8UmFuZ2U+LCBWZWN0b3I8VUNoYXIs
IDEwMjQ+Jik7CiB1bnNpZ25lZCBwcmVmaXhMZW5ndGhGb3JSYW5nZShSZWZQdHI8UmFuZ2U+LCBW
ZWN0b3I8VUNoYXIsIDEwMjQ+Jik7CiB1bnNpZ25lZCBiYWNrd2FyZFNlYXJjaEZvckJvdW5kYXJ5
V2l0aFRleHRJdGVyYXRvcihTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yJiwgVmVjdG9y
PFVDaGFyLCAxMDI0PiYsIHVuc2lnbmVkLCBCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uKTsKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE5NjY4OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1
IEBACisyMDE2LTAyLTE3ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
QVg6IEltcGxlbWVudCBzZW50ZW5jZSByZWxhdGVkIHRleHQgbWFya2VyIGZ1bmN0aW9ucyB1c2lu
ZyBUZXh0SXRlcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NDMxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAg
ICAgIChuZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJDYWxsYmFjayk6Cisg
ICAgICAgIChzZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXJDYWxsYmFjayk6Cisg
ICAgICAgIChwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlckNhbGxi
YWNrKToKKyAgICAgICAgKG5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyQ2Fs
bGJhY2spOgorICAgICAgICAoc2V0U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdlQ2FsbGJhY2spOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRl
bmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRK
U0NsYXNzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJ
T1MubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0UGFyYWdyYXBoRW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRTZW50ZW5jZUVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRN
YXJrZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5j
ZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydGVkQWN0aW9ucyk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYWdyYXBoVGV4dE1h
cmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNT
ZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0UGFyYWdyYXBoRW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5l
eHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6X2Nv
bnZlcnRNYXRoTXVsdGlzY3JpcHRQYWlyc1RvU3RyaW5nKToKKwogMjAxNi0wMi0xNSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBHYXRoZXIgc29t
ZSBydWRpbWVudGFyeSBzdGF0aXN0aWNzIGR1cmluZyByZXNvdXJjZSBsb2FkIApJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE5NjU1OSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM3LDYgKzEwMzcsMzMgQEAgc3RhdGljIEpTVmFs
dWVSZWYgbmV4dFBhcmFncmFwaEVuZFRleHRNYQogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcjo6bWFrZUpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIoY29udGV4dCwgdG9BWEVsZW1l
bnQodGhpc09iamVjdCktPm5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciht
YXJrZXIpKTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2VudGVuY2VUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAg
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIgPSBudWxscHRyOworICAgIGlmIChhcmd1
bWVudENvdW50ID09IDEpCisgICAgICAgIG1hcmtlciA9IHRvVGV4dE1hcmtlcihKU1ZhbHVlVG9P
YmplY3QoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICAKKyAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6bWFrZUpTQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZShjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+c2VudGVuY2VUZXh0
TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKG1hcmtlcikpOworfQorCitzdGF0aWMgSlNWYWx1ZVJl
ZiBwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlckNhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciogbWFya2VyID0gbnVsbHB0cjsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKQorICAgICAg
ICBtYXJrZXIgPSB0b1RleHRNYXJrZXIoSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50
c1swXSwgZXhjZXB0aW9uKSk7CisgICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyOjptYWtlSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcihjb250ZXh0LCB0b0FYRWxlbWVudCh0
aGlzT2JqZWN0KS0+cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIo
bWFya2VyKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIG5leHRTZW50ZW5jZUVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIgPSBudWxscHRyOworICAgIGlmIChh
cmd1bWVudENvdW50ID09IDEpCisgICAgICAgIG1hcmtlciA9IHRvVGV4dE1hcmtlcihKU1ZhbHVl
VG9PYmplY3QoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICAKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6Om1ha2VKU0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5uZXh0U2VudGVuY2VFbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlcihtYXJrZXIpKTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0
U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHVpRWxlbWVudCA9IHRvQVhFbGVt
ZW50KHRoaXNPYmplY3QpOwpAQCAtMTY2Miw2ICsxNjg5LDIxIEBAIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIEFjY2Vzc2liaWxpdHlVSUUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZVRl
eHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKQorewor
ICAgIHJldHVybiBudWxscHRyOworfQorCitBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRT
ZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KikKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogI2VuZGlmCiAKIC8vIERlc3RydWN0aW9u
CkBAIC0xODQ5LDYgKzE4OTEsOSBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmdldEpTCiAgICAgICAgIHsgInBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIi
LCBwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAicHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
IiwgcHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAibmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyIiwgbmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKKyAgICAgICAgeyAic2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiwg
c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAg
ICAgICAgeyAicHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiLCBw
cmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlckNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCisgICAgICAgIHsgIm5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiwg
bmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzZXRTZWxlY3RlZENoaWxkIiwgc2V0U2VsZWN0ZWRDaGlsZENhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldFNlbGVjdGVkQ2hpbGRBdEluZGV4Iiwgc2V0U2VsZWN0ZWRD
aGlsZEF0SW5kZXhDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJyZW1vdmVTZWxlY3Rpb25B
dEluZGV4IiwgcmVtb3ZlU2VsZWN0aW9uQXRJbmRleENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lv
biAxOTY1NTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Nyw2ICsyNjcsOSBAQCBwdWJsaWM6CiAgICAgQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSBwYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFy
a2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgcHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKik7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgbmV4dFBhcmFn
cmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7
CisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBzZW50ZW5jZVRleHRNYXJrZXJSYW5n
ZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciBwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IG5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyKik7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBzZWxlY3RlZFRleHRN
YXJrZXJSYW5nZSgpOwogICAgIHZvaWQgcmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOwog
ICAgIGJvb2wgc2V0U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZpc2lvbiAxOTY1NTkpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNTg1LDYgKzU4NSwyMSBAQCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBBY2Nlc3Np
YmlsaXR5VUlFCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCitBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKICNlbmRpZiAvLyBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQ
TEFURk9STShJT1MpCiAKICNwcmFnbWEgbWFyayBVbnVzZWQKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZp
c2lvbiAxOTY1NTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTkxNiw2ICsxOTE2LDM2IEBAIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUUKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAorQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqIHRleHRNYXJrZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAg
aWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWFNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVy
OihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKKyAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0FjY2Vzc2liaWxp
dHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFy
dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFy
a2VyKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHByZXZpb3VzVGV4
dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhQcmV2
aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihp
ZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyKHByZXZpb3VzVGV4dE1hcmtlcik7CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIAorICAgIHJldHVybiBudWxscHRyOworfQorCitBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK3sKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBuZXh0VGV4dE1hcmtlciA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhOZXh0U2VudGVuY2VFbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9y
bVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKG5leHRU
ZXh0TWFya2VyKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKICNlbmRpZiAvLyBTVVBQT1JUU19BWF9URVhUTUFSS0VSUyAmJiBQTEFU
Rk9STShNQUMpCiAKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1cHBvcnRl
ZEFjdGlvbnMoKQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxOTY1NTkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsNiArMjUyLDkgQEAg
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZQogUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhZ3Jh
cGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikg
eyByZXR1cm4gbnVsbHB0cjsgfQogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQogUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQorUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZVRleHRN
YXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKSB7IHJldHVy
biBudWxscHRyOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KK1Bhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3Vz
U2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDE5NjU1OSkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgsNiArMjU4LDkgQEAgcHVibGljOgogICAgIFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gcGFyYWdyYXBoVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwogICAgIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IG5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwogICAgIFBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IHByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIFBhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gc2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlcj4gbmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKTsKKyAgICBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyPiBwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwogCiAgICAgLy8gUmV0dXJucyBhbiBvcmRlcmVkIGxp
c3Qgb2Ygc3VwcG9ydGVkIGFjdGlvbnMgZm9yIGFuIGVsZW1lbnQuCiAgICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IHN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdDsKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAkocmV2aXNpb24gMTk2NTU5KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw5IEBAIGlu
dGVyZmFjZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlIHBhcmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIgdGV4dE1hcmtlcik7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIg
cHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyIHRleHRNYXJrZXIpOwogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIG5l
eHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciB0ZXh0TWFya2VyKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHNlbnRl
bmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0
ZXh0TWFya2VyKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBwcmV2aW91c1NlbnRlbmNl
U3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0
TWFya2VyKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBuZXh0U2VudGVuY2VFbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciB0ZXh0TWFya2VyKTsK
IAogICAgIC8vIFJldHVybnMgYW4gb3JkZXJlZCBsaXN0IG9mIHN1cHBvcnRlZCBhY3Rpb25zIGZv
ciBhbiBlbGVtZW50LgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc3VwcG9ydGVk
QWN0aW9uczsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9z
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5t
bQkocmV2aXNpb24gMTk2NTU5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTEzMSw2ICsxMTMxLDIxIEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZVRleHRNYXJrZXJS
YW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCit7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQoreworICAg
IHJldHVybiBudWxscHRyOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK3sKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gMDsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbQkocmV2aXNpb24gMTk2NTU5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTk0Myw2ICsxOTQzLDM2IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZVRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIp
Cit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgdGV4dE1hcmtlclJhbmdl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFNlbnRlbmNlVGV4
dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIgZm9yUGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5w
bGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0
YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRN
YXJrZXIpCit7CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWQgcHJldmlvdXNQ
YXJhZ3JhcGhTdGFydE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhQcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIgZm9y
UGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUocHJldmlvdXNQYXJhZ3JhcGhTdGFy
dE1hcmtlcik7CisgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworICAgIAorICAgIHJldHVybiBu
dWxscHRyOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpuZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK3sKKyAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKKyAgICBpZCBuZXh0UGFyYWdyYXBoRW5kTWFya2VyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1h
cmtlcigpXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXI6OmNyZWF0ZShuZXh0
UGFyYWdyYXBoRW5kTWFya2VyKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHN0YXRpYyBOU1N0cmluZyAqX2NvbnZlcnRNYXRoTXVs
dGlzY3JpcHRQYWlyc1RvU3RyaW5nKE5TQXJyYXkgKnBhaXJzKQogewogICAgIF9fYmxvY2sgTlNN
dXRhYmxlU3RyaW5nICpyZXN1bHQgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTY1NTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wMi0xNyAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFYOiBJbXBsZW1lbnQgc2VudGVuY2UgcmVsYXRlZCB0ZXh0IG1hcmtl
ciBmdW5jdGlvbnMgdXNpbmcgVGV4dEl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXBh
cmFncmFwaC1uYXYtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL3Rl
eHQtbWFya2VyLXBhcmFncmFwaC1uYXYuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy90ZXh0LW1hcmtlci1zZW50ZW5jZS1uYXYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtlci1zZW50ZW5jZS1uYXYuaHRtbDogQWRkZWQu
CisKIDIwMTYtMDItMTIgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBB
WDogSW1wbGVtZW50IHBhcmFncmFwaCByZWxhdGVkIHRleHQgbWFya2VyIGZ1bmN0aW9ucyB1c2lu
ZyBUZXh0SXRlcmF0b3IKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQt
bWFya2VyLXBhcmFncmFwaC1uYXYtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXBhcmFncmFwaC1uYXYtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxOTY1NTkpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90
ZXh0LW1hcmtlci1wYXJhZ3JhcGgtbmF2LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTAsNiArMTAsOCBAQCBsaW5lIGJyZWFrcwogc29tZQogdGV4dAogdGhpcyBpcyBteSBmaXJzdCBw
YXJhZ3JhcGguIE9mIHRleHQuIGl0IGhhcyBzb21lIHRleHQuCisKKwogdGhpcyBpcyBteSBzZWNv
bmQgcGFyYWdyYXBoLiBPZiB0ZXh0LiBpdCBoYXMgc29tZSB0ZXh0LgogdGhpcyBpcyBteSB0aGly
ZCBwYXJhZ3JhcGguIE9mIHRleHQuIGl0IGhhcyBzb21lIHRleHQuCiAKQEAgLTY4LDEwICs3MCwx
NCBAQCBDdXJyZW50IHBhcmFncmFwaCBpczogdGV4dAogUHJlIHBhcmFncmFwaCBzdGFydCB0byBu
ZXh0IHBhcmFncmFwaCBlbmQ6IHRleHQKIAogUGFyYWdyYXBoOiB0aGlzIGlzIG15IGZpcnN0IHBh
cmFncmFwaC4gT2YgdGV4dC4gaXQgaGFzIHNvbWUgdGV4dC4KK1BhcmFncmFwaDogCitQYXJhZ3Jh
cGg6IAogUGFyYWdyYXBoOiB0aGlzIGlzIG15IHNlY29uZCBwYXJhZ3JhcGguIE9mIHRleHQuIGl0
IGhhcyBzb21lIHRleHQuCiBQYXJhZ3JhcGg6IHRoaXMgaXMgbXkgdGhpcmQgcGFyYWdyYXBoLiBP
ZiB0ZXh0LiBpdCBoYXMgc29tZSB0ZXh0LgogUGFyYWdyYXBoOiB0aGlzIGlzIG15IHRoaXJkIHBh
cmFncmFwaC4gT2YgdGV4dC4gaXQgaGFzIHNvbWUgdGV4dC4KIFBhcmFncmFwaDogdGhpcyBpcyBt
eSBzZWNvbmQgcGFyYWdyYXBoLiBPZiB0ZXh0LiBpdCBoYXMgc29tZSB0ZXh0LgorUGFyYWdyYXBo
OiAKK1BhcmFncmFwaDogCiBQYXJhZ3JhcGg6IHRoaXMgaXMgbXkgZmlyc3QgcGFyYWdyYXBoLiBP
ZiB0ZXh0LiBpdCBoYXMgc29tZSB0ZXh0LgogVGVzdCBnb2luZyBmb3J3YXJkLgogRW5kIHBhcmFn
cmFwaDogdGV4dApJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJr
ZXItcGFyYWdyYXBoLW5hdi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3RleHQtbWFya2VyLXBhcmFncmFwaC1uYXYuaHRtbAkocmV2aXNpb24gMTk2NTU5
KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJrZXItcGFyYWdyYXBo
LW5hdi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGxpbmUgYnJlYWtzCiBz
b21lPGJyPnRleHQKIDwvZGl2PgogCi08ZGl2IGlkPSJ0ZXh0OSI+dGhpcyBpcyBteSBmaXJzdCBw
YXJhZ3JhcGguIE9mIHRleHQuIGl0IGhhcyBzb21lIHRleHQuPGJyPgorPGRpdiBpZD0idGV4dDki
PnRoaXMgaXMgbXkgZmlyc3QgcGFyYWdyYXBoLiBPZiB0ZXh0LiBpdCBoYXMgc29tZSB0ZXh0Ljxi
cj48YnI+PGJyPgogdGhpcyBpcyBteSBzZWNvbmQgcGFyYWdyYXBoLiBPZiB0ZXh0LiBpdCBoYXMg
c29tZSB0ZXh0Ljxicj4KIHRoaXMgaXMgbXkgdGhpcmQgcGFyYWdyYXBoLiBPZiB0ZXh0LiBpdCBo
YXMgc29tZSB0ZXh0Ljxicj48YnI+CiA8L2Rpdj4KQEAgLTEyMSw3ICsxMjEsNyBAQCB0aGlzIGlz
IG15IHRoaXJkIHBhcmFncmFwaC4gT2YgdGV4dC4gaXQgCiAgICAgICAgIHN0YXJ0TWFya2VyID0g
dGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsK
ICAgICAgICAgc3RhcnRNYXJrZXIgPSB0ZXh0Lm5leHRUZXh0TWFya2VyKHN0YXJ0TWFya2VyKTsK
ICAgICAgICAgdmFyIGVuZE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwotICAgICAgICB2ZXJpZnlQYXJhZ3JhcGhzKHRleHQsIHN0
YXJ0TWFya2VyLCAzKTsKKyAgICAgICAgdmVyaWZ5UGFyYWdyYXBocyh0ZXh0LCBzdGFydE1hcmtl
ciwgNSk7CiAgICAgICAgIAogICAgICAgICAvLyBDaGVjayB0aGUgcGFyYWdyYXBoIG1hcmtlciBy
dW5zIGZyb20gc3RhcnQgdG8gZW5kLCBhbmQgYmFja3dhcmRzLgogICAgICAgICAvLyBNYWtlIHN1
cmUgaXQgd29uJ3QgaGFuZy4KQEAgLTE2MCwyNiArMTYwLDIzIEBAIHRoaXMgaXMgbXkgdGhpcmQg
cGFyYWdyYXBoLiBPZiB0ZXh0LiBpdCAKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZnVu
Y3Rpb24gdmVyaWZ5UGFyYWdyYXBocyhvYmosIHN0YXJ0TWFya2VyLCBwYXJhZ3JhcGhDb3VudCkg
ewotICAgICAgICAgICAgLy8gTW92ZSB0byB0aGUgZW5kIG9mIGZpcnN0IHBhcmFncmFwaCwgc28g
dGhlIGZpcnN0IHBhcmFncmFwaAotICAgICAgICAgICAgLy8gd29uJ3QgcHJpbnQgdHdpY2UuCi0g
ICAgICAgICAgICB2YXIgY3VycmVudCA9IG9iai5uZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXIoc3RhcnRNYXJrZXIpOworICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBzdGFy
dE1hcmtlcjsKICAgICAgICAgICAgIHZhciBpID0gMDsKICAgICAgICAgICAgIHdoaWxlKGkgPCBw
YXJhZ3JhcGhDb3VudCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBvYmoubmV4dFBhcmFn
cmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKGN1cnJlbnQpOwogICAgICAgICAgICAgICAg
IHZhciBjdXJyUmFuZ2UgPSBvYmoucGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtl
cihjdXJyZW50KTsKICAgICAgICAgICAgICAgICB2YXIgY3VyclBhcmFncmFwaCA9IG9iai5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UoY3VyclJhbmdlKTsKICAgICAgICAgICAgICAgICBkZWJ1Zygi
UGFyYWdyYXBoOiAiICsgY3VyclBhcmFncmFwaCk7Ci0gICAgICAgICAgICAgICAgY3VycmVudCA9
IG9iai5uZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIoY3VycmVudCk7CiAg
ICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBCYWNrd2FyZHMuCi0gICAgICAgICAgICBjdXJyZW50ID0gb2JqLnByZXZpb3VzUGFy
YWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihjdXJyZW50KTsKICAgICAgICAgICAg
IGkgPSAwOwogICAgICAgICAgICAgd2hpbGUoaSA8IHBhcmFncmFwaENvdW50KSB7CisgICAgICAg
ICAgICAgICAgY3VycmVudCA9IG9iai5wcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXIoY3VycmVudCk7CiAgICAgICAgICAgICAgICAgdmFyIGN1cnJSYW5nZSA9IG9i
ai5wYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKGN1cnJlbnQpOwogICAgICAg
ICAgICAgICAgIHZhciBjdXJyUGFyYWdyYXBoID0gb2JqLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShjdXJyUmFuZ2UpOwogICAgICAgICAgICAgICAgIGRlYnVnKCJQYXJhZ3JhcGg6ICIgKyBjdXJy
UGFyYWdyYXBoKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50ID0gb2JqLnByZXZpb3VzUGFyYWdy
YXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlcihjdXJyZW50KTsKICAgICAgICAgICAgICAg
ICBpKys7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXNlbnRlbmNlLW5hdi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJrZXItc2VudGVu
Y2UtbmF2LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3RleHQtbWFya2VyLXNlbnRlbmNlLW5hdi1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MiBAQAorVGhpcyBpcyBhIHNlbnRlbmNlLCByaWdodD8gWWVzIQor
dGVzdCBhdWRpbyBmaWxlLgor5ben5YWL5YqbIOaYr+mjn+eJqeWQlz8g5piv55qE44CCCivZg9mK
2YEg2K3Yp9mE2YPYnworYm90aCAgIHNwYWNlcworbGluZSBicmVha3MuIFJpZ2h0PworVGhpcyBp
cyBteSBmaXJzdCBzZW50ZW5jZS4gCisKK1RoaXMgaXMgbXkgc2Vjb25kIHNlbnRlbmNlLiBUaGlz
IGlzIG15IHRoaXJkIHNlbnRlbmNlLiBUaGlzIGlzIG15IGZvdXJ0aCBzZW50ZW5jZS4KK1RoaXMg
dGVzdHMgdGhhdCBzZW50ZW5jZSBuYXZpZ2F0aW9uIGlzIHdvcmtpbmcgY29ycmVjdGx5LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ3VycmVudCBjaGFyYWN0ZXIgaXM6IFQKK0N1
cnJlbnQgc2VudGVuY2UgaXM6IFRoaXMgaXMgYSBzZW50ZW5jZSwgcmlnaHQ/IAorUHJlIHNlbnRl
bmNlIHN0YXJ0IHRvIG5leHQgc2VudGVuY2UgZW5kOiBUaGlzIGlzIGEgc2VudGVuY2UsIHJpZ2h0
PyAKKworQ3VycmVudCBjaGFyYWN0ZXIgaXM6IHQKK0N1cnJlbnQgc2VudGVuY2UgaXM6IHRlc3Qg
YXVkaW8gW0FUVEFDSE1FTlRdZmlsZS4KK1ByZSBzZW50ZW5jZSBzdGFydCB0byBuZXh0IHNlbnRl
bmNlIGVuZDogdGVzdCBhdWRpbyBbQVRUQUNITUVOVF1maWxlLgorCitDdXJyZW50IGNoYXJhY3Rl
ciBpczog5benCitDdXJyZW50IHNlbnRlbmNlIGlzOiDlt6flhYvlipsg5piv6aOf54mp5ZCXPyAK
K1ByZSBzZW50ZW5jZSBzdGFydCB0byBuZXh0IHNlbnRlbmNlIGVuZDog5ben5YWL5YqbIOaYr+mj
n+eJqeWQlz8gCisKK0N1cnJlbnQgY2hhcmFjdGVyIGlzOiDZgworQ3VycmVudCBzZW50ZW5jZSBp
czog2YPZitmBINit2KfZhNmD2J8KK1ByZSBzZW50ZW5jZSBzdGFydCB0byBuZXh0IHNlbnRlbmNl
IGVuZDog2YPZitmBINit2KfZhNmD2J8KKworQ3VycmVudCBjaGFyYWN0ZXIgaXM6IGIKK0N1cnJl
bnQgc2VudGVuY2UgaXM6IGJvdGggICBzcGFjZXMKK1ByZSBzZW50ZW5jZSBzdGFydCB0byBuZXh0
IHNlbnRlbmNlIGVuZDogYm90aCAgIHNwYWNlcworCitDdXJyZW50IGNoYXJhY3RlciBpczogaQor
Q3VycmVudCBzZW50ZW5jZSBpczogbGluZSBicmVha3MuIAorUHJlIHNlbnRlbmNlIHN0YXJ0IHRv
IG5leHQgc2VudGVuY2UgZW5kOiBsaW5lIGJyZWFrcy4gCisKK1NlbnRlbmNlOiBUaGlzIGlzIG15
IGZpcnN0IHNlbnRlbmNlLiAKK1NlbnRlbmNlOiAKK1NlbnRlbmNlOiBUaGlzIGlzIG15IHNlY29u
ZCBzZW50ZW5jZS4gCitTZW50ZW5jZTogVGhpcyBpcyBteSB0aGlyZCBzZW50ZW5jZS4gCitTZW50
ZW5jZTogVGhpcyBpcyBteSBmb3VydGggc2VudGVuY2UuCitTZW50ZW5jZTogVGhpcyBpcyBteSBm
b3VydGggc2VudGVuY2UuCitTZW50ZW5jZTogVGhpcyBpcyBteSB0aGlyZCBzZW50ZW5jZS4gCitT
ZW50ZW5jZTogVGhpcyBpcyBteSBzZWNvbmQgc2VudGVuY2UuIAorU2VudGVuY2U6IAorU2VudGVu
Y2U6IFRoaXMgaXMgbXkgZmlyc3Qgc2VudGVuY2UuIAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3RleHQtbWFya2VyLXNlbnRlbmNlLW5hdi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXNlbnRlbmNlLW5hdi5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJrZXIt
c2VudGVuY2UtbmF2Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDEgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+IAorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxk
aXYgaWQ9InRleHQxIiB0YWJpbmRleD0iMCI+CitUaGlzIGk8c3Bhbj5zIGEgc2VuPC9zcGFuPnRl
bmNlLAorcmlnaHQ/IFllcyEKKzwvZGl2PgorCis8ZGl2IGlkPSJ0ZXh0MiI+Cit0ZXN0IGF1ZGlv
IDxhdWRpbyBjb250cm9scz48c291cmNlIHNyYz0idGVzdC5tcDMiIHR5cGU9ImF1ZGlvL21wZWci
PjwvYXVkaW8+ZmlsZS4KKzwvZGl2PgorCis8ZGl2IGlkPSJ0ZXh0MyI+Civlt6flhYvlipsKK+aY
r+mjn+eJqeWQlz8g5piv55qE44CCCis8L2Rpdj4KKworPGRpdiBpZD0idGV4dDNhIj4KK9mD2YrZ
gSDYrdin2YTZg9ifCis8L2Rpdj4KKworPHByZSBpZD0idGV4dDQiPgorYm90aCAgIHNwYWNlcwor
bGluZSBicmVha3MuIFJpZ2h0PworPC9wcmU+CisKKzxkaXYgaWQ9InRleHQ1Ij4KK1RoaXMgaXMg
bXkgZmlyc3Qgc2VudGVuY2UuIDxicj48YnI+CitUaGlzIGlzIG15IHNlY29uZCBzZW50ZW5jZS4g
VGhpcyBpcyBteSB0aGlyZCBzZW50ZW5jZS4KK1RoaXMgaXMgbXkgZm91cnRoIHNlbnRlbmNlLgor
PC9kaXY+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHNlbnRl
bmNlIG5hdmlnYXRpb24gaXMgd29ya2luZyBjb3JyZWN0bHkuIik7CisgICAgCisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIAorICAgICAgICAvLyBDaGVjayB0
aGF0IHdlIGNhbiBnZXQgdGhlIHBhcmFncmFwaCByYW5nZSB3aXRoIHNwYW4gdGFnLgorICAgICAg
ICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgidGV4dDEiKTsKKyAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtl
clJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKKyAgICAgICAgdmFyIHN0YXJ0TWFya2VyID0gdGV4dC5z
dGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKKyAgICAg
ICAgdmFyIGN1cnJlbnRNYXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KHN0YXJ0TWFya2VyLCAxLCB0
ZXh0KTsKKyAgICAgICAgCisgICAgICAgIC8vIEF1ZGlvIHRhZy4KKyAgICAgICAgdGV4dCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDIiKTsKKyAg
ICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRl
eHQpOworICAgICAgICBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CisgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBhZHZh
bmNlQW5kVmVyaWZ5KHN0YXJ0TWFya2VyLCAxLCB0ZXh0KTsKKyAgICAgICAgCisgICAgICAgIC8v
IE11bHRpLWxhbmd1YWdlcy4KKyAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDMiKTsKKyAgICAgICAgdGV4dE1hcmtlclJhbmdl
ID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOworICAgICAgICBzdGFydE1h
cmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJS
YW5nZSk7CisgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KHN0YXJ0TWFy
a2VyLCAxLCB0ZXh0KTsKKyAgICAgICAgCisgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQzYSIpOworICAgICAgICB0ZXh0TWFy
a2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7CisgICAgICAg
IHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlKTsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IGFkdmFuY2VBbmRWZXJpZnko
c3RhcnRNYXJrZXIsIDEsIHRleHQpOworICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgdGhlIGNh
c2Ugd2l0aCBwcmUgdGFnLgorICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NCIpOworICAgICAgICB0ZXh0TWFya2VyUmFuZ2Ug
PSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7CisgICAgICAgIHN0YXJ0TWFy
a2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlKTsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IGFkdmFuY2VBbmRWZXJpZnkoc3RhcnRNYXJr
ZXIsIDEsIHRleHQpOworICAgICAgICBjdXJyZW50TWFya2VyID0gYWR2YW5jZUFuZFZlcmlmeShj
dXJyZW50TWFya2VyLCAxNSwgdGV4dCk7CisgICAgICAgIAorICAgICAgICAvLyBDaGVjayBnZXR0
aW5nIHRoZSBjb3JyZWN0IHNlbnRlbmNlcy4KKyAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDUiKTsKKyAgICAgICAgdGV4dE1h
cmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOworICAgICAg
ICBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHRNYXJrZXJSYW5nZSk7CisgICAgICAgIHZlcmlmeVNlbnRlbmNlcyh0ZXh0LCBzdGFydE1hcmtl
ciwgNSk7CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBhZHZhbmNlQW5kVmVyaWZ5KGN1cnJl
bnRNYXJrZXIsIG9mZnNldCwgb2JqKSB7CisgICAgICAgICAgICB2YXIgcHJldmlvdXNNYXJrZXIg
PSBjdXJyZW50TWFya2VyOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvZmZzZXQ7
IGkrKykgeworICAgICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsK
KyAgICAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLm5leHRUZXh0TWFya2VyKHByZXZp
b3VzTWFya2VyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZlcmlmeVNlbnRlbmNlUmFu
Z2VGb3JUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCBvYmopOworICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRNYXJrZXI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGZ1bmN0aW9uIHJlcGxhY2VBdHRhY2htZW50SW5TdHJpbmcoc3RyKSB7CisgICAgICAgICAg
ICBzdHIgPSAgc3RyLnJlcGxhY2UoU3RyaW5nLmZyb21DaGFyQ29kZSg2NTUzMiksICJbQVRUQUNI
TUVOVF0iKTsKKyAgICAgICAgICAgIHJldHVybiBzdHI7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGZ1bmN0aW9uIHZlcmlmeVNlbnRlbmNlUmFuZ2VGb3JUZXh0TWFya2VyKHByZU1hcmtl
ciwgdGV4dE1hcmtlciwgb2JqKSB7CisgICAgICAgICAgICB2YXIgbWFya2VyUmFuZ2UgPSBvYmou
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmVNYXJrZXIsIHRleHRNYXJrZXIpOworICAgICAg
ICAgICAgdmFyIGN1cnJlbnRDaGFyYWN0ZXIgPSByZXBsYWNlQXR0YWNobWVudEluU3RyaW5nKG9i
ai5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpKTsKKyAgICAgICAgICAgIGRl
YnVnKCJDdXJyZW50IGNoYXJhY3RlciBpczogIiArIGN1cnJlbnRDaGFyYWN0ZXIpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICB2YXIgcmFuZ2UgPSBvYmouc2VudGVuY2VUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICAgICAgdmFyIHNlbnRlbmNlID0g
cmVwbGFjZUF0dGFjaG1lbnRJblN0cmluZyhvYmouc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJh
bmdlKSk7CisgICAgICAgICAgICBkZWJ1ZygiQ3VycmVudCBzZW50ZW5jZSBpczogIiArIHNlbnRl
bmNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHByZVN0YXJ0ID0gb2JqLnByZXZp
b3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOworICAg
ICAgICAgICAgdmFyIG5leHRFbmQgPSBvYmoubmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgICAgICB2YXIgcHJlQW5kTmV4dFNlbnRlbmNl
UmFuZ2UgPSBvYmoudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmVTdGFydCwgbmV4dEVuZCk7
CisgICAgICAgICAgICB2YXIgcHJlQW5kTmV4dFNlbnRlbmNlID0gcmVwbGFjZUF0dGFjaG1lbnRJ
blN0cmluZyhvYmouc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHByZUFuZE5leHRTZW50ZW5jZVJh
bmdlKSk7CisgICAgICAgICAgICBkZWJ1ZygiUHJlIHNlbnRlbmNlIHN0YXJ0IHRvIG5leHQgc2Vu
dGVuY2UgZW5kOiAiICsgcHJlQW5kTmV4dFNlbnRlbmNlICsgIlxuIik7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGZ1bmN0aW9uIHZlcmlmeVNlbnRlbmNlcyhvYmosIHN0YXJ0TWFya2Vy
LCBzZW50ZW5jZUNvdW50KSB7CisgICAgICAgICAgICB2YXIgY3VycmVudCA9IHN0YXJ0TWFya2Vy
OworICAgICAgICAgICAgdmFyIGkgPSAwOworICAgICAgICAgICAgd2hpbGUoaSA8IHNlbnRlbmNl
Q291bnQpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gb2JqLm5leHRTZW50ZW5jZUVuZFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyKGN1cnJlbnQpOworICAgICAgICAgICAgICAgIHZhciBjdXJy
UmFuZ2UgPSBvYmouc2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKGN1cnJlbnQp
OworICAgICAgICAgICAgICAgIHZhciBjdXJyU2VudGVuY2UgPSBvYmouc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKGN1cnJSYW5nZSk7CisgICAgICAgICAgICAgICAgZGVidWcoIlNlbnRlbmNlOiAi
ICsgY3VyclNlbnRlbmNlKTsKKyAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEJhY2t3YXJkcy4KKyAgICAgICAgICAgIGkgPSAw
OworICAgICAgICAgICAgd2hpbGUoaSA8IHNlbnRlbmNlQ291bnQpIHsKKyAgICAgICAgICAgICAg
ICBjdXJyZW50ID0gb2JqLnByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyKGN1cnJlbnQpOworICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gb2JqLm5leHRUZXh0TWFy
a2VyKGN1cnJlbnQpOworICAgICAgICAgICAgICAgIHZhciBjdXJyUmFuZ2UgPSBvYmouc2VudGVu
Y2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKG5leHQpOworICAgICAgICAgICAgICAgIHZh
ciBjdXJyU2VudGVuY2UgPSBvYmouc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKGN1cnJSYW5nZSk7
CisgICAgICAgICAgICAgICAgZGVidWcoIlNlbnRlbmNlOiAiICsgY3VyclNlbnRlbmNlKTsKKyAg
ICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0gICAgCisgICAgfQor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>