<?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>202827</bug_id>
          
          <creation_ts>2019-10-10 14:53:22 -0700</creation_ts>
          <short_desc>Canonicalize how we prepare the prototype chain for inline caching</short_desc>
          <delta_ts>2019-10-14 23:10:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201994</see_also>
          <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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1578870</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-10 14:53:22 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578962</commentid>
    <comment_count>1</comment_count>
      <attachid>380714</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-10 19:14:29 -0700</bug_when>
    <thetext>Created attachment 380714
WIP

it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579130</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-11 09:51:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/56193919&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579145</commentid>
    <comment_count>3</comment_count>
      <attachid>380762</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-11 10:36:54 -0700</bug_when>
    <thetext>Created attachment 380762
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579283</commentid>
    <comment_count>4</comment_count>
      <attachid>380796</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-11 15:47:48 -0700</bug_when>
    <thetext>Created attachment 380796
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579284</commentid>
    <comment_count>5</comment_count>
      <attachid>380796</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-11 15:49:34 -0700</bug_when>
    <thetext>Comment on attachment 380796
patch

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

&gt; Tools/Scripts/run-jsc-stress-tests:491
&gt; +EAGER_OPTIONS = [&quot;--thresholdForJITAfterWarmUp=10&quot;, &quot;--thresholdForJITSoon=10&quot;, &quot;--thresholdForOptimizeAfterWarmUp=20&quot;, &quot;--thresholdForOptimizeAfterLongWarmUp=20&quot;, &quot;--thresholdForOptimizeSoon=20&quot;, &quot;--thresholdForFTLOptimizeAfterWarmUp=20&quot;, &quot;--thresholdForFTLOptimizeSoon=20&quot;, &quot;--thresholdForOMGOptimizeAfterWarmUp=20&quot;, &quot;--thresholdForOMGOptimizeSoon=20&quot;, &quot;--maximumEvalCacheableSourceLength=150000&quot;, &quot;--useEagerCodeBlockJettisonTiming=true&quot;, &quot;--repatchBufferingCountdown=0&quot;]

this is helpful to force us to generate IC code more eagerly. This makes my test case repro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579302</commentid>
    <comment_count>6</comment_count>
      <attachid>380799</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-11 16:34:56 -0700</bug_when>
    <thetext>Created attachment 380799
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579305</commentid>
    <comment_count>7</comment_count>
      <attachid>380796</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-11 16:44:09 -0700</bug_when>
    <thetext>Comment on attachment 380796
patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:20
&gt; +        try just defer caching to later later if we encounter a situation where we

/later later/later/s

&gt; Source/JavaScriptCore/bytecode/ObjectPropertyConditionSet.cpp:511
&gt; +// Current might be null. Structure can&apos;t be null.

Can you insert `ASSERT(structure)` too?

&gt; Source/JavaScriptCore/jit/Repatch.cpp:307
&gt; +                        // Property offsets may have changed due to flattening. We&apos;ll cache later.

Sounds fine.

&gt; Source/JavaScriptCore/jit/Repatch.cpp:510
&gt; +                Structure* newStructure = Structure::addPropertyTransitionToExistingStructureConcurrently(structure, ident.impl(), 0, offset);

I like, `static_cast&lt;unsigned&gt;(PropertyAttribute::None)`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579639</commentid>
    <comment_count>8</comment_count>
      <attachid>380799</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-14 08:39:02 -0700</bug_when>
    <thetext>Comment on attachment 380799
patch

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

&gt; Source/JavaScriptCore/runtime/Structure.cpp:1134
&gt; +            out.print(comma, entry.key, &quot;:&quot;, static_cast&lt;int&gt;(entry.offset), &quot;|&quot;, &quot;getter=&quot;, entry.attributes &amp; PropertyAttribute::Accessor);

Will revert</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579693</commentid>
    <comment_count>9</comment_count>
      <attachid>380894</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-14 10:45:19 -0700</bug_when>
    <thetext>Created attachment 380894
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579706</commentid>
    <comment_count>10</comment_count>
      <attachid>380894</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 11:08:11 -0700</bug_when>
    <thetext>Comment on attachment 380894
patch for landing

Rejecting attachment 380894 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 380894, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Tools/ChangeLog contains OOPS!.

Full output: https://webkit-queues.webkit.org/results/13129920</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579720</commentid>
    <comment_count>11</comment_count>
      <attachid>380902</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-14 11:30:34 -0700</bug_when>
    <thetext>Created attachment 380902
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579732</commentid>
    <comment_count>12</comment_count>
      <attachid>380902</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 12:11:57 -0700</bug_when>
    <thetext>Comment on attachment 380902
patch for landing

Clearing flags on attachment: 380902

Committed r251085: &lt;https://trac.webkit.org/changeset/251085&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579733</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 12:11:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580004</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-14 23:10:19 -0700</bug_when>
    <thetext>*** Bug 202594 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380714</attachid>
            <date>2019-10-10 19:14:29 -0700</date>
            <delta_ts>2019-10-11 10:36:54 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>25544</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAkocmV2aXNpb24gMjUwOTQ4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDE0ICsyNjcsOSBAQCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiBnZW5lcmF0ZUNvbmRpdGlvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotZW51bSBDb25j
dXJyZW5jeSB7Ci0gICAgTWFpblRocmVhZCwKLSAgICBDb25jdXJyZW50Ci19OwogdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29u
ZGl0aW9ucygKLSAgICBWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogcHJvdG90eXBlLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yLAotICAgIENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5ID0gTWFpblRocmVhZCkKKyAgICBWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U09iamVjdCogcHJvdG90eXBlLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIFZlY3Rv
cjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4gY29uZGl0aW9uczsKICAgICAKQEAgLTMxNCwyMSAr
MzA5LDkgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaQogICAgICAg
ICBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIAogICAgICAgICBp
ZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgaWYgKGNvbmN1cnJl
bmN5ID09IE1haW5UaHJlYWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNC
ZWVuRmxhdHRlbmVkQmVmb3JlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJEaWN0aW9uYXJ5IGhhcyBiZWVuIGZsYXR0ZW5lZCBiZWZvcmUsIHNvIGlu
dmFsaWQuXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0OjppbnZhbGlkKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCi0gICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkZsYXR0ZW5pbmcgIiwgcG9pbnRlckR1bXAoc3RydWN0
dXJlKSk7Ci0gICAgICAgICAgICAgICAgc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVj
dHVyZSh2bSwgb2JqZWN0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
aWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkNhbm5vdCBmbGF0dGVuIGRpY3Rpb25hcnkgd2hlbiBub3Qg
b24gbWFpbiB0aHJlYWQsIHNvIGludmFsaWQuXG4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3Nl
KQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkNhbm5vdCBjYWNoZSBkaWN0aW9uYXJ5LlxuIik7
CisgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQo
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghZnVuY3Rvcihjb25kaXRpb25zLCBvYmplY3Qp
KSB7CkBAIC00ODcsNyArNDcwLDcgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJh
dGVDb25kaQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvbmRp
dGlvbnMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fSwgQ29uY3VycmVudCk7CisgICAgICAgIH0pOwogfQogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3NDb25jdXJyZW50bHkoCkBAIC01
MDEsNyArNDg0LDcgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvbmRpdGlvbnMuYXBw
ZW5kKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwgQ29uY3Vy
cmVudCk7CisgICAgICAgIH0pOwogfQogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5l
cmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eVNldHRlck1pc3NDb25jdXJyZW50bHkoCkBAIC01MTYs
NyArNDk5LDcgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvbmRpdGlvbnMuYXBwZW5k
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwgQ29uY3VycmVu
dCk7CisgICAgICAgIH0pOwogfQogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNv
bmRpdGlvbkZvclNlbGZFcXVpdmFsZW5jZSgKQEAgLTUyNSw1ICs1MDgsODEgQEAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gZ2VuZXJhdGVDb25kaXRpbwogICAgIHJldHVybiBnZW5lcmF0ZUNvbmRp
dGlvbih2bSwgb3duZXIsIG9iamVjdCwgdWlkLCBQcm9wZXJ0eUNvbmRpdGlvbjo6RXF1aXZhbGVu
Y2UpOwogfQogCisvLyBjdXJyZW50IG1pZ2h0IGJlIG51bGwuIHN0cnVjdHVyZSBjYW4ndCBiZSBu
dWxsLgorc3RhdGljIE9wdGlvbmFsPFByb3RvdHlwZUNoYWluU3RhdHVzPiBwcmVwYXJlUHJvdG90
eXBlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
Y3VycmVudCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwor
ICAgIGJvb2wgdXNlc1BvbHlQcm90byA9IGZhbHNlOworICAgIGJvb2wgZmxhdHRlbmVkRGljdGlv
bmFyeSA9IGZhbHNlOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKHN0cnVjdHVy
ZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgIGlmICghY3VycmVudCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5GbGF0
dGVuZWRCZWZvcmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBhc09i
amVjdChjdXJyZW50KSk7CisgICAgICAgICAgICBmbGF0dGVuZWREaWN0aW9uYXJ5ID0gdHJ1ZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJl
Q2FjaGVhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudCA9PSB0YXJnZXQpIHsKKyAgICAg
ICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gV2Ugb25seSBoYXZlIHBvbHkgcHJvdG8gaWYgd2UgbmVlZCB0byBhY2Nlc3Mgb3Vy
IHByb3RvdHlwZSB2aWEKKyAgICAgICAgLy8gdGhlIHBvbHkgcHJvdG8gcHJvdG9jb2wuIElmIHRo
ZSBzbG90IGJhc2UgaXMgdGhlIG9ubHkgcG9seSBwcm90bworICAgICAgICAvLyB0aGluZyBpbiB0
aGUgY2hhaW4sIGFuZCB3ZSBoYXZlIGEgY2FjaGUgaGl0IG9uIGl0LCB0aGVuIHdlJ3JlIG5vdAor
ICAgICAgICAvLyBwb2x5IHByb3RvLgorICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJv
dG8oKSkgeworICAgICAgICAgICAgaWYgKCFjdXJyZW50KQorICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICB1c2VzUG9seVByb3RvID0gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gc3RydWN0dXJlLT5wcm90b3R5cGVG
b3JMb29rdXAoZ2xvYmFsT2JqZWN0LCBjdXJyZW50KTsKKyAgICAgICAgaWYgKHByb3RvdHlwZS5p
c051bGwoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjdXJyZW50ID0gYXNPYmplY3Qo
cHJvdG90eXBlKTsKKyAgICAgICAgc3RydWN0dXJlID0gY3VycmVudC0+c3RydWN0dXJlKHZtKTsK
KyAgICB9CisKKyAgICBpZiAoIWZvdW5kICYmICEhdGFyZ2V0KQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgUHJvdG90eXBlQ2hhaW5TdGF0dXMgcmVzdWx0OworICAgIHJlc3Vs
dC51c2VzUG9seVByb3RvID0gdXNlc1BvbHlQcm90bzsKKyAgICByZXN1bHQuZmxhdHRlbmVkRGlj
dGlvbmFyeSA9IGZsYXR0ZW5lZERpY3Rpb25hcnk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitPcHRpb25hbDxQcm90b3R5cGVDaGFpblN0YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9y
Q2FjaGluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpTT2Jq
ZWN0KiB0YXJnZXQpCit7CisgICAgcmV0dXJuIHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hp
bmcoZ2xvYmFsT2JqZWN0LCBiYXNlLCBiYXNlLT5zdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT52bSgp
KSwgdGFyZ2V0KTsKK30KKworT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5TdGF0dXM+IHByZXBhcmVQ
cm90b3R5cGVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNPYmplY3QqIHRh
cmdldCA9IHNsb3QuaXNVbnNldCgpID8gbnVsbHB0ciA6IHNsb3Quc2xvdEJhc2UoKTsKKyAgICBy
ZXR1cm4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2Us
IHRhcmdldCk7Cit9CisKK09wdGlvbmFsPFByb3RvdHlwZUNoYWluU3RhdHVzPiBwcmVwYXJlUHJv
dG90eXBlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogYmFzZVN0cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldCkKK3sKKyAgICByZXR1cm4gcHJl
cGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIG51bGxwdHIsIGJhc2VT
dHJ1Y3R1cmUsIHRhcmdldCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQuaAkocmV2aXNpb24gMjUwOTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE4OSw0ICsxODksMTMgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVD
b25kaQogT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJv
cGVydHlTZXR0ZXJNaXNzQ29uY3VycmVudGx5KAogICAgIFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqIGhlYWRTdHJ1Y3R1cmUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCitzdHJ1
Y3QgUHJvdG90eXBlQ2hhaW5TdGF0dXMgeworICAgIGJvb2wgdXNlc1BvbHlQcm90bzsKKyAgICBi
b29sIGZsYXR0ZW5lZERpY3Rpb25hcnk7Cit9OworCitPcHRpb25hbDxQcm90b3R5cGVDaGFpblN0
YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90Jik7CitPcHRpb25hbDxQcm90b3R5cGVDaGFp
blN0YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCk7CitPcHRpb25hbDxQcm90b3R5cGVDaGFp
blN0YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWlu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVBy
b3RvQWNjZXNzQ2hhaW4uY3BwCShyZXZpc2lvbiAyNTA5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw3ICs1NiwxNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IFBv
CiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNCZWVuRmxhdHRlbmVkQmVmb3JlKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICAgICAgICAgIFN0cmluZ1ByaW50
U3RyZWFtIGJlZm9yZTsKKyAgICAgICAgICAgIGJlZm9yZS5wcmludChKU1ZhbHVlKGN1cnJlbnQp
KTsKKyAgICAgICAgICAgIFN0cmluZyB0ZXh0ID0gYmVmb3JlLnRvU3RyaW5nKCk7CisgICAgICAg
ICAgICBib29sIHVuY2FjaGVhYmxlQmVmb3JlID0gc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGlj
dGlvbmFyeSgpOwogICAgICAgICAgICAgc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVj
dHVyZSh2bSwgYXNPYmplY3QoY3VycmVudCkpOworICAgICAgICAgICAgaWYgKHVuY2FjaGVhYmxl
QmVmb3JlKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJCZWZvcmU6ICIsIHRleHQpOwor
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiQWZ0ZXI6ICIsIEpTVmFsdWUoY3VycmVudCkpOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPnByb3Bl
cnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCShyZXZpc2lvbiAyNTA5
NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hh
aW4uaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsMTIgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgfQogCisgICAgU3RydWN0dXJlKiBzbG90QmFzZSgpIGNvbnN0CisgICAgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX2NoYWluLnNpemUoKSk7CisgICAgICAgIHJldHVybiBtX2NoYWlu
Lmxhc3QoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUG9seVByb3RvQWNjZXNzQ2hhaW4oKSA9
IGRlZmF1bHQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMjUwOTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk4LDYgKzk5OCw4IEBAIHN0YXRp
YyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAgICAgICAgICAgICB0YWdD
RnVuY3Rpb25QdHI8dm9pZCosIEpTRW50cnlQdHJUYWc+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
LAogICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+
Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJh
bWUpKTsKICAgICAgICAgfQorCisgICAgICAgIGRhdGFMb2dMbigiQ2FsbGVlOiAiLCBjYWxsZWUp
OwogICAgIAogICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpOwogICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3Io
ZXhlYywgY2FsbGVlKSk7CkBAIC0xMDA2LDYgKzEwMDgsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1
cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQq
PihLZWVwVGhlRnJhbWUpKTsKICAgICB9CiAKKwogICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNw
ZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIAogICAgIENvbnN0
cnVjdERhdGEgY29uc3RydWN0RGF0YTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAkocmV2aXNpb24gMjUwOTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCw3IEBAIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKICAgICAgICAgICAgICAgICAgICAgaWYgKHN0
cnVjdHVyZS0+aGFzQmVlbkZsYXR0ZW5lZEJlZm9yZSgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+
ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIGpzQ2FzdDxKU09iamVjdCo+KGJhc2VDZWxs
KSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7IC8vIFdlIG1h
eSBoYXZlIGNoYW5nZWQgcHJvcGVydHkgb2Zmc2V0cy4KICAgICAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkgJiYgc3RydWN0dXJlLT50eXBlSW5mbygp
LmdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlKCkpCkBAIC0yOTgs
MTQgKzI5OSwyMyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlECiAg
ICAgICAgICAgICAgICAgLy8gSWYgYSBraW5kIGlzIEdldEJ5SURLaW5kOjpEaXJlY3QsIHdlIGRv
IG5vdCBuZWVkIHRvIGludmVzdGlnYXRlIHByb3RvdHlwZSBjaGFpbnMgZnVydGhlci4KICAgICAg
ICAgICAgICAgICAvLyBDYWNoZWFiaWxpdHkganVzdCBkZXBlbmRzIG9uIHRoZSBoZWFkIHN0cnVj
dHVyZS4KICAgICAgICAgICAgICAgICBpZiAoa2luZCAhPSBHZXRCeUlES2luZDo6RGlyZWN0KSB7
Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlc1BvbHlQcm90bzsKLSAgICAgICAgICAgICAg
ICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRl
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3QsIHVzZXNQb2x5UHJv
dG8pOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIGludmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJv
dG90eXBlIHByb3BlcnR5LgorICAgICAgICAgICAgICAgICAgICBhdXRvIHByb3RvdHlwZUNhY2hl
UmVzdWx0ID0gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIGJhc2VDZWxsLCBzbG90KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFw
cm90b3R5cGVDYWNoZVJlc3VsdCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZl
VXBPbkNhY2hlOworCisgICAgICAgICAgICAgICAgICAgIGlmIChwcm90b3R5cGVDYWNoZVJlc3Vs
dC0+ZmxhdHRlbmVkRGljdGlvbmFyeSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJv
cGVydHkgb2Zmc2V0cyBtYXkgaGF2ZSBjaGFuZ2VkIGR1ZSB0byBmbGF0dGVuaW5nLiBXZSdsbCBj
YWNoZSBsYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0
ZXI7CiAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAoIXVz
ZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RvdHlwZUNhY2hlUmVz
dWx0LT51c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVB
Y2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwgc2xvdCwgdXNlc1BvbHlQcm90byk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBw
cm9wZXJ0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChwcm90b3R5cGVBY2Nlc3NDaGFpbi0+c2xvdEJhc2UoKS0+c3RydWN0dXJlKCktPmdldCh2
bSwgcHJvcGVydHlOYW1lKSA9PSBvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgdXNlIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0IGluc3RlYWQgZm9yIGZhc3RlciBhY2Nlc3Nlcy4KICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVsbHB0cjsKIApAQCAtMzI2LDEwICszMzYsMTAg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChzbG90LmlzVW5zZXQoKSB8fCBjb25kaXRpb25TZXQuc2xvdEJhc2VDb25k
aXRpb24oKS5vZmZzZXQoKSA9PSBvZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2xvdC5pc1Vuc2V0KCkg
PyBpbnZhbGlkT2Zmc2V0IDogc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgSlNGdW5jdGlvbiogZ2V0dGVyID0gbnVsbHB0cjsKQEAgLTQ5NiwxMiArNTA2
LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVlbkZsYXR0ZW5lZEJlZm9yZSgpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIGpzQ2FzdDxK
U09iamVjdCo+KGJhc2VWYWx1ZSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlD
YWNoZUxhdGVyOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldDsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9
Ci0gICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9F
eGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdHVyZSwgaWRlbnQuaW1wbCgpLCAwLCBvZmZzZXQpOworICAgICAgICAgICAgICAgIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4
aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KHN0cnVjdHVyZSwgaWRlbnQuaW1wbCgpLCAwLCBv
ZmZzZXQpOwogICAgICAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlIHx8ICFuZXdTdHJ1Y3R1
cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKQEAgLTUxMiwyMiArNTIxLDIyIEBAIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogICAgICAg
ICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKICAgICAg
ICAgICAgICAgICBpZiAocHV0S2luZCA9PSBOb3REaXJlY3QpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYm9vbCB1c2VzUG9seVByb3RvOwotICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nl
c3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBiYXNlQ2VsbCwgbnVsbHB0ciwgdXNlc1BvbHlQcm90byk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghcHJvdG90eXBlQWNjZXNzQ2hhaW4pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEl0J3MgaW52YWxpZCB0byBhY2Nlc3MgdGhpcyBwcm90b3R5cGUgcHJvcGVydHku
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcHJvdG90eXBlQ2FjaGVSZXN1bHQgPSBwcmVwYXJl
UHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFz
ZUNlbGwsIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUNhY2hl
UmVzdWx0KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXNQb2x5
UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RvdHlwZUNhY2hlUmVzdWx0LT51
c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3ND
aGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBiYXNlQ2VsbCwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbmRpdGlvblNldCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlTZXR0ZXJNaXNzKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBuZXdTdHJ1Y3R1cmUsIGlkZW50Lmlt
cGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNv
bmRpdGlvbnNGb3JQcm9wZXJ0eVNldHRlck1pc3MoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm0sIGNvZGVCbG9jaywgZXhlYywgbmV3U3RydWN0dXJlLCBpZGVudC5pbXBsKCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAg
ICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBuZXdDYXNl
ID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIG9mZnNldCwgc3RydWN0dXJlLCBu
ZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikp
OwpAQCAtNTM4LDE4ICs1NDcsMjAgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
UHV0QnlJRAogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5i
YXNlKCkgIT0gYmFzZVZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlc1BvbHlQ
cm90bzsKLSAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNl
bGwsIHNsb3QuYmFzZSgpLCB1c2VzUG9seVByb3RvKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQn
cyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBwcm90b3R5cGVDYWNoZVJlc3VsdCA9IHByZXBhcmVQcm90b3R5cGVDaGFp
bkZvckNhY2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwgc2xvdC5i
YXNlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUNhY2hlUmVzdWx0KQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXNQb2x5UHJvdG8pIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RvdHlwZUNhY2hlUmVzdWx0LT51c2VzUG9seVBy
b3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBv
bHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBi
YXNlQ2VsbCwgc2xvdC5iYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90
b3R5cGVBY2Nlc3NDaGFpbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0J3Mg
aW52YWxpZCB0byBhY2Nlc3MgdGhpcyBwcm90b3R5cGUgcHJvcGVydHkuCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjb25kaXRpb25TZXQgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRl
Q29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0Q3VzdG9tKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1Y3R1cmUsIHNsb3QuYmFz
ZSgpLCBpZGVudC5pbXBsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6Tm9uZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJh
dGVDb25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXRDdXN0b20oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBzbG90LmJhc2Uo
KSwgaWRlbnQuaW1wbCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
Ok5vbmUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFs
aWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsK
ICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNTY0LDI3ICs1NzUsMzEgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRAogICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAKICAgICAgICAgICAgICAgICBpZiAo
c2xvdC5iYXNlKCkgIT0gYmFzZVZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgdXNl
c1BvbHlQcm90bzsKLSAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQ
b2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
YmFzZUNlbGwsIHNsb3QuYmFzZSgpLCB1c2VzUG9seVByb3RvKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBwcm90b3R5cGVDYWNoZVJlc3VsdCA9IHByZXBhcmVQcm90b3R5
cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwg
c2xvdC5iYXNlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUNhY2hlUmVz
dWx0KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RvdHlwZUNhY2hl
UmVzdWx0LT5mbGF0dGVuZWREaWN0aW9uYXJ5KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFJldHJ5Q2FjaGVMYXRlcjsKIAotICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXNQb2x5
UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RvdHlwZUNhY2hlUmVzdWx0LT51
c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3ND
aGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEl0J3MgaW52YWxpZCB0byBhY2Nlc3MgdGhpcyBwcm90b3R5cGUgcHJvcGVydHkuCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHJvdG90eXBl
QWNjZXNzQ2hhaW4tPnNsb3RCYXNlKCktPnN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFt
ZSkgPT0gb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVsbHB0cjsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXQoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5i
YXNlKCksIGlkZW50LmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25T
ZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm90b3R5cGVQcm9wZXJ0eUhpdCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1Y3R1cmUsIHNsb3Qu
YmFzZSgpLCBpZGVudC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25k
aXRpb25TZXQuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShjb25kaXRpb25T
ZXQuc2xvdEJhc2VDb25kaXRpb24oKS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6
QWNjZXNzb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBjb25kaXRpb25TZXQuc2xv
dEJhc2VDb25kaXRpb24oKS5vZmZzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChjb25kaXRpb25TZXQuc2xvdEJhc2VDb25kaXRpb24oKS5vZmZzZXQoKSA9PSBvZmZzZXQpOwog
ICAgICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBuZXdDYXNlID0gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKApAQCAtNjY3LDM0
ICs2ODIsNDYgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpICE9IGJhc2UpIHsK
LSAgICAgICAgICAgICAgICBib29sIHVzZXNQb2x5UHJvdG87Ci0gICAgICAgICAgICAgICAgcHJv
dG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgc2xvdCwgdXNlc1BvbHlQcm90byk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAgICAgICAg
ICAvLyBJdCdzIGludmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90eXBlIHByb3BlcnR5LgorICAg
ICAgICAgICAgICAgIGF1dG8gcHJvdG90eXBlQ2FjaGVSZXN1bHQgPSBwcmVwYXJlUHJvdG90eXBl
Q2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgc2xvdCk7
CisgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVDYWNoZVJlc3VsdCkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGlmICghdXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgIGlmIChwcm90
b3R5cGVDYWNoZVJlc3VsdC0+ZmxhdHRlbmVkRGljdGlvbmFyeSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKKworICAgICAgICAgICAgICAgIGlmIChwcm90b3R5
cGVDYWNoZVJlc3VsdC0+dXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICBwcm90
b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlLCBzbG90KTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQn
cyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwcm90b3R5cGVBY2Nlc3NDaGFpbi0+c2xvdEJh
c2UoKS0+c3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lKSA9PSBzbG90LmNhY2hlZE9m
ZnNldCgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBw
cm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGNvbmRp
dGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KAogICAg
ICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBzbG90
LnNsb3RCYXNlKCksIGlkZW50LmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY29u
ZGl0aW9uU2V0LmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZl
VXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY29uZGl0aW9uU2V0LnNsb3RC
YXNlQ29uZGl0aW9uKCkub2Zmc2V0KCkgPT0gc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Ym9vbCB1c2VzUG9seVByb3RvOwotICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQ
b2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
YmFzZSwgc2xvdCwgdXNlc1BvbHlQcm90byk7Ci0gICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFj
Y2Vzc0NoYWluKSB7Ci0gICAgICAgICAgICAgICAgLy8gSXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0
aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAgICAgIGF1dG8gcHJvdG90eXBlQ2FjaGVS
ZXN1bHQgPSBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgYmFzZSwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUNh
Y2hlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIXVzZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAg
IGlmIChwcm90b3R5cGVDYWNoZVJlc3VsdC0+dXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAg
ICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2UsIHNsb3QpOworICAgICAgICAgICAgICAg
IGlmICghcHJvdG90eXBlQWNjZXNzQ2hhaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSXQn
cyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51
bGxwdHI7CiAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25z
Rm9yUHJvcGVydHlNaXNzKAogICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVj
LCBzdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRp
b25TZXQuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5p
c1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAogICAgICAgICBM
T0dfSUMoKElDRXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwg
aWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAKQEAgLTc1NCw3ICs3ODEsNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jCiAgICAgICAgICAgICB9IGVs
c2UgaWYgKHN0cnVjdHVyZS0+cHJvdG90eXBlUXVlcmllc0FyZUNhY2hlYWJsZSgpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFRlYWNoIHRoaXMgdG8gZG8gcG9seSBwcm90by4KICAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1
NjYzCi0KKyAgICAgICAgICAgICAgICBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIHNob3VsZEhpdCA/IHByb3RvdHlw
ZSA6IG51bGxwdHIpOwogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
IGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0Zvckluc3RhbmNlT2YoCiAgICAgICAg
ICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwgcHJvdG90eXBlLCB3
YXNGb3VuZCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjUwOTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA5LDYgKzcwOSw4
IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEUKICAgICAgICAgc3Ry
dWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwganNDYXN0PEpTT2JqZWN0Kj4o
YmFzZUNlbGwpKTsKICAgICB9CiAKKyAgICBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5n
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3QpOworCiAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uczsKICAgICBpZiAoc2xvdC5pc1Vuc2V0
KCkpCiAgICAgICAgIGNvbmRpdGlvbnMgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1p
c3Modm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBpZGVudC5pbXBsKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAy
NTA5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMxLDcgKzExMzEsNyBAQCB2b2lkIFN0cnVjdHVyZTo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjCiAgICAgCiAgICAgY29uc3RfY2FzdDxTdHJ1Y3R1cmUqPih0aGlz
KS0+Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVudGx5KAogICAgICAgICBbJl0gKGNvbnN0IFByb3Bl
cnR5TWFwRW50cnkmIGVudHJ5KSAtPiBib29sIHsKLSAgICAgICAgICAgIG91dC5wcmludChjb21t
YSwgZW50cnkua2V5LCAiOiIsIHN0YXRpY19jYXN0PGludD4oZW50cnkub2Zmc2V0KSk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsIGVudHJ5LmtleSwgIjoiLCBzdGF0aWNfY2FzdDxpbnQ+
KGVudHJ5Lm9mZnNldCksICJ8IiwgImdldHRlcj0iLCBlbnRyeS5hdHRyaWJ1dGVzICYgUHJvcGVy
dHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAJKHJldmlzaW9uIDI1MDk0OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA3LDExICsxMDcsMTMgQEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9T
dHJpbgogCiAgICAgICAgIC8vIFRoaXMgd2lsbCBub3QgY3JlYXRlIGEgY29uZGl0aW9uIGZvciB0
aGUgY3VycmVudCBzdHJ1Y3R1cmUgYnV0IHRoYXQgaXMgZ29vZCBiZWNhdXNlIHdlIGtub3cgdGhl
IFN5bWJvbC50b1N0cmluZ1RhZwogICAgICAgICAvLyBpcyBub3Qgb24gdGhlIG93blN0cnVjdHVy
ZSBzbyB3ZSB3aWxsIHRyYW5zaXNpdGlvbiBpZiBvbmUgaXMgYWRkZWQgYW5kIHRoaXMgY2FjaGUg
d2lsbCBubyBsb25nZXIgYmUgdXNlZC4KKyAgICAgICAgcHJlcGFyZVByb3RvdHlwZUNoYWluRm9y
Q2FjaGluZyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG93blN0cnVjdHVyZSwgdG9TdHJp
bmdUYWdTeW1ib2xTbG90LnNsb3RCYXNlKCkpOwogICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5l
cmF0ZUNvbmRpdGlvbnNGb3JQcm90b3R5cGVQcm9wZXJ0eUhpdCh2bSwgdGhpcywgZXhlYywgb3du
U3RydWN0dXJlLCB0b1N0cmluZ1RhZ1N5bWJvbFNsb3Quc2xvdEJhc2UoKSwgdm0ucHJvcGVydHlO
YW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wuaW1wbCgpKTsKICAgICAgICAgQVNTRVJUKCFjb25kaXRp
b25TZXQuaXNWYWxpZCgpIHx8IGNvbmRpdGlvblNldC5oYXNPbmVTbG90QmFzZUNvbmRpdGlvbigp
KTsKLSAgICB9IGVsc2UgaWYgKHRvU3RyaW5nVGFnU3ltYm9sU2xvdC5pc1Vuc2V0KCkpCisgICAg
fSBlbHNlIGlmICh0b1N0cmluZ1RhZ1N5bWJvbFNsb3QuaXNVbnNldCgpKSB7CisgICAgICAgIHBy
ZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBvd25TdHJ1Y3R1cmUsIG51bGxwdHIpOwogICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0
ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3Modm0sIHRoaXMsIGV4ZWMsIG93blN0cnVjdHVyZSwg
dm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wuaW1wbCgpKTsKLSAgICBlbHNlCisg
ICAgfSBlbHNlCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFs
aWQoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380762</attachid>
            <date>2019-10-11 10:36:54 -0700</date>
            <delta_ts>2019-10-11 15:47:48 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>29280</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAkocmV2aXNpb24gMjUwOTQ4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDE0ICsyNjcsOSBAQCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiBnZW5lcmF0ZUNvbmRpdGlvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotZW51bSBDb25j
dXJyZW5jeSB7Ci0gICAgTWFpblRocmVhZCwKLSAgICBDb25jdXJyZW50Ci19OwogdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29u
ZGl0aW9ucygKLSAgICBWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogcHJvdG90eXBlLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yLAotICAgIENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5ID0gTWFpblRocmVhZCkKKyAgICBWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U09iamVjdCogcHJvdG90eXBlLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIFZlY3Rv
cjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4gY29uZGl0aW9uczsKICAgICAKQEAgLTMxNCwyMSAr
MzA5LDkgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaQogICAgICAg
ICBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIAogICAgICAgICBp
ZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgaWYgKGNvbmN1cnJl
bmN5ID09IE1haW5UaHJlYWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNC
ZWVuRmxhdHRlbmVkQmVmb3JlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJEaWN0aW9uYXJ5IGhhcyBiZWVuIGZsYXR0ZW5lZCBiZWZvcmUsIHNvIGlu
dmFsaWQuXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0OjppbnZhbGlkKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCi0gICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkZsYXR0ZW5pbmcgIiwgcG9pbnRlckR1bXAoc3RydWN0
dXJlKSk7Ci0gICAgICAgICAgICAgICAgc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVj
dHVyZSh2bSwgb2JqZWN0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
aWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkNhbm5vdCBmbGF0dGVuIGRpY3Rpb25hcnkgd2hlbiBub3Qg
b24gbWFpbiB0aHJlYWQsIHNvIGludmFsaWQuXG4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldEludGVybmFsOjp2ZXJib3Nl
KQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkNhbm5vdCBjYWNoZSBkaWN0aW9uYXJ5LlxuIik7
CisgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQo
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghZnVuY3Rvcihjb25kaXRpb25zLCBvYmplY3Qp
KSB7CkBAIC00ODcsNyArNDcwLDcgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJh
dGVDb25kaQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvbmRp
dGlvbnMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fSwgQ29uY3VycmVudCk7CisgICAgICAgIH0pOwogfQogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3NDb25jdXJyZW50bHkoCkBAIC01
MDEsNyArNDg0LDcgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvbmRpdGlvbnMuYXBw
ZW5kKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwgQ29uY3Vy
cmVudCk7CisgICAgICAgIH0pOwogfQogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5l
cmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eVNldHRlck1pc3NDb25jdXJyZW50bHkoCkBAIC01MTYs
NyArNDk5LDcgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNvbmRpdGlvbnMuYXBwZW5k
KHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSwgQ29uY3VycmVu
dCk7CisgICAgICAgIH0pOwogfQogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNv
bmRpdGlvbkZvclNlbGZFcXVpdmFsZW5jZSgKQEAgLTUyNSw1ICs1MDgsODEgQEAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gZ2VuZXJhdGVDb25kaXRpbwogICAgIHJldHVybiBnZW5lcmF0ZUNvbmRp
dGlvbih2bSwgb3duZXIsIG9iamVjdCwgdWlkLCBQcm9wZXJ0eUNvbmRpdGlvbjo6RXF1aXZhbGVu
Y2UpOwogfQogCisvLyBDdXJyZW50IG1pZ2h0IGJlIG51bGwuIFN0cnVjdHVyZSBjYW4ndCBiZSBu
dWxsLgorc3RhdGljIE9wdGlvbmFsPFByb3RvdHlwZUNoYWluU3RhdHVzPiBwcmVwYXJlUHJvdG90
eXBlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
Y3VycmVudCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwor
ICAgIGJvb2wgdXNlc1BvbHlQcm90byA9IGZhbHNlOworICAgIGJvb2wgZmxhdHRlbmVkRGljdGlv
bmFyeSA9IGZhbHNlOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKHN0cnVjdHVy
ZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgIGlmICghY3VycmVudCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5GbGF0
dGVuZWRCZWZvcmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBhc09i
amVjdChjdXJyZW50KSk7CisgICAgICAgICAgICBmbGF0dGVuZWREaWN0aW9uYXJ5ID0gdHJ1ZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJl
Q2FjaGVhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudCA9PSB0YXJnZXQpIHsKKyAgICAg
ICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gV2Ugb25seSBoYXZlIHBvbHkgcHJvdG8gaWYgd2UgbmVlZCB0byBhY2Nlc3Mgb3Vy
IHByb3RvdHlwZSB2aWEKKyAgICAgICAgLy8gdGhlIHBvbHkgcHJvdG8gcHJvdG9jb2wuIElmIHRo
ZSBzbG90IGJhc2UgaXMgdGhlIG9ubHkgcG9seSBwcm90bworICAgICAgICAvLyB0aGluZyBpbiB0
aGUgY2hhaW4sIGFuZCB3ZSBoYXZlIGEgY2FjaGUgaGl0IG9uIGl0LCB0aGVuIHdlJ3JlIG5vdAor
ICAgICAgICAvLyBwb2x5IHByb3RvLgorICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJv
dG8oKSkgeworICAgICAgICAgICAgaWYgKCFjdXJyZW50KQorICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICB1c2VzUG9seVByb3RvID0gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gc3RydWN0dXJlLT5wcm90b3R5cGVG
b3JMb29rdXAoZ2xvYmFsT2JqZWN0LCBjdXJyZW50KTsKKyAgICAgICAgaWYgKHByb3RvdHlwZS5p
c051bGwoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjdXJyZW50ID0gYXNPYmplY3Qo
cHJvdG90eXBlKTsKKyAgICAgICAgc3RydWN0dXJlID0gY3VycmVudC0+c3RydWN0dXJlKHZtKTsK
KyAgICB9CisKKyAgICBpZiAoIWZvdW5kICYmICEhdGFyZ2V0KQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgUHJvdG90eXBlQ2hhaW5TdGF0dXMgcmVzdWx0OworICAgIHJlc3Vs
dC51c2VzUG9seVByb3RvID0gdXNlc1BvbHlQcm90bzsKKyAgICByZXN1bHQuZmxhdHRlbmVkRGlj
dGlvbmFyeSA9IGZsYXR0ZW5lZERpY3Rpb25hcnk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitPcHRpb25hbDxQcm90b3R5cGVDaGFpblN0YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9y
Q2FjaGluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpTT2Jq
ZWN0KiB0YXJnZXQpCit7CisgICAgcmV0dXJuIHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hp
bmcoZ2xvYmFsT2JqZWN0LCBiYXNlLCBiYXNlLT5zdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT52bSgp
KSwgdGFyZ2V0KTsKK30KKworT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5TdGF0dXM+IHByZXBhcmVQ
cm90b3R5cGVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNPYmplY3QqIHRh
cmdldCA9IHNsb3QuaXNVbnNldCgpID8gbnVsbHB0ciA6IHNsb3Quc2xvdEJhc2UoKTsKKyAgICBy
ZXR1cm4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2Us
IHRhcmdldCk7Cit9CisKK09wdGlvbmFsPFByb3RvdHlwZUNoYWluU3RhdHVzPiBwcmVwYXJlUHJv
dG90eXBlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogYmFzZVN0cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldCkKK3sKKyAgICByZXR1cm4gcHJl
cGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIG51bGxwdHIsIGJhc2VT
dHJ1Y3R1cmUsIHRhcmdldCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQuaAkocmV2aXNpb24gMjUwOTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE4OSw0ICsxODksMTMgQEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVD
b25kaQogT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJv
cGVydHlTZXR0ZXJNaXNzQ29uY3VycmVudGx5KAogICAgIFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqIGhlYWRTdHJ1Y3R1cmUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCitzdHJ1
Y3QgUHJvdG90eXBlQ2hhaW5TdGF0dXMgeworICAgIGJvb2wgdXNlc1BvbHlQcm90bzsKKyAgICBi
b29sIGZsYXR0ZW5lZERpY3Rpb25hcnk7Cit9OworCitPcHRpb25hbDxQcm90b3R5cGVDaGFpblN0
YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90Jik7CitPcHRpb25hbDxQcm90b3R5cGVDaGFp
blN0YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCk7CitPcHRpb25hbDxQcm90b3R5cGVDaGFp
blN0YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSogYmFzZSwgSlNPYmplY3QqIHRhcmdldCk7CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0No
YWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eVByb3RvQWNjZXNzQ2hhaW4uY3BwCShyZXZpc2lvbiAyNTA5NDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwzMyArMzEsMjYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIGNvbnN0IFByb3BlcnR5U2xv
dCYgc2xvdCwgYm9vbCYgdXNlc1BvbHlQcm90bykKK3N0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU09iamVjdCogdGFyZ2V0ID0gc2xvdC5pc1Vuc2V0KCkgPyBudWxscHRyIDogc2xvdC5z
bG90QmFzZSgpOwotICAgIHJldHVybiBjcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlLCB0YXJnZXQs
IHVzZXNQb2x5UHJvdG8pOworICAgIHJldHVybiBjcmVhdGUoZ2xvYmFsT2JqZWN0LCBiYXNlLCB0
YXJnZXQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IFBvbHlQ
cm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0LCBib29sJiB1c2VzUG9seVByb3RvKQorc3RkOjp1
bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgSlNPYmplY3Qq
IHRhcmdldCkKIHsKICAgICBKU0NlbGwqIGN1cnJlbnQgPSBiYXNlOwogICAgIFZNJiB2bSA9IGJh
c2UtPnZtKCk7CiAKICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAKLSAgICB1c2VzUG9seVByb3Rv
ID0gZmFsc2U7Ci0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHJl
c3VsdChuZXcgUG9seVByb3RvQWNjZXNzQ2hhaW4oKSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGl0
ZXJhdGlvbk51bWJlciA9IDA7IHRydWU7ICsraXRlcmF0aW9uTnVtYmVyKSB7CiAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gY3VycmVudC0+c3RydWN0dXJlKHZtKTsKIAotICAgICAgICBp
ZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZS0+aXNPYmplY3QoKSk7Ci0gICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNCZWVuRmxh
dHRlbmVkQmVmb3JlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAg
ICAgICAgIHN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIGFzT2JqZWN0
KGN1cnJlbnQpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25h
cnkoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlmICghc3RydWN0
dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTc3LDEyICs3MCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4gUG8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgLy8g
V2Ugb25seSBoYXZlIHBvbHkgcHJvdG8gaWYgd2UgbmVlZCB0byBhY2Nlc3Mgb3VyIHByb3RvdHlw
ZSB2aWEKLSAgICAgICAgLy8gdGhlIHBvbHkgcHJvdG8gcHJvdG9jb2wuIElmIHRoZSBzbG90IGJh
c2UgaXMgdGhlIG9ubHkgcG9seSBwcm90bwotICAgICAgICAvLyB0aGluZyBpbiB0aGUgY2hhaW4s
IGFuZCB3ZSBoYXZlIGEgY2FjaGUgaGl0IG9uIGl0LCB0aGVuIHdlJ3JlIG5vdAotICAgICAgICAv
LyBwb2x5IHByb3RvLgotICAgICAgICB1c2VzUG9seVByb3RvIHw9IHN0cnVjdHVyZS0+aGFzUG9s
eVByb3RvKCk7Ci0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBzdHJ1Y3R1cmUtPnByb3Rv
dHlwZUZvckxvb2t1cChnbG9iYWxPYmplY3QsIGN1cnJlbnQpOwogICAgICAgICBpZiAocHJvdG90
eXBlLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAkocmV2aXNp
b24gMjUwOTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0Fj
Y2Vzc0NoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDggQEAgcHVibGljOgogICAg
IFBvbHlQcm90b0FjY2Vzc0NoYWluKFBvbHlQcm90b0FjY2Vzc0NoYWluJikgPSBkZWZhdWx0Owog
CiAgICAgLy8gUmV0dXJucyBudWxscHRyIHdoZW4gaW52YWxpZC4KLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBK
U0NlbGwqIGJhc2UsIGNvbnN0IFByb3BlcnR5U2xvdCYsIGJvb2wmIHVzZXNQb2x5UHJvdG8pOwot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNyZWF0ZShK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCwgYm9vbCYgdXNl
c1BvbHlQcm90byk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4gY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0
eVNsb3QmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQp
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBjbG9uZSgpCiAg
ICAgewpAQCAtNzMsNiArNzMsMTIgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAg
U3RydWN0dXJlKiBzbG90QmFzZSgpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VS
VChtX2NoYWluLnNpemUoKSk7CisgICAgICAgIHJldHVybiBtX2NoYWluLmxhc3QoKTsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgUG9seVByb3RvQWNjZXNzQ2hhaW4oKSA9IGRlZmF1bHQ7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMjUwOTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTk4LDYgKzk5OCw4IEBAIHN0YXRpYyBTbG93UGF0aFJldHVy
blR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAgICAgICAgICAgICB0YWdDRnVuY3Rpb25QdHI8dm9p
ZCosIEpTRW50cnlQdHJUYWc+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLAogICAgICAgICAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+Y2FsbE1vZGUoKSA9PSBD
YWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJhbWUpKTsKICAgICAgICAg
fQorCisgICAgICAgIGRhdGFMb2dMbigiQ2FsbGVlOiAiLCBjYWxsZWUpOwogICAgIAogICAgICAg
ICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpOwogICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7
CkBAIC0xMDA2LDYgKzEwMDgsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhv
c3RDYWxsCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUp
KTsKICAgICB9CiAKKwogICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2lu
ZCgpID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIAogICAgIENvbnN0cnVjdERhdGEgY29uc3Ry
dWN0RGF0YTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNp
b24gMjUwOTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUdldEJ5SUQKICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVl
bkZsYXR0ZW5lZEJlZm9yZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVV
cE9uQ2FjaGU7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25h
cnlTdHJ1Y3R1cmUodm0sIGpzQ2FzdDxKU09iamVjdCo+KGJhc2VDZWxsKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7IC8vIFdlIG1heSBoYXZlIGNoYW5nZWQg
cHJvcGVydHkgb2Zmc2V0cy4KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBp
ZiAoc2xvdC5pc1Vuc2V0KCkgJiYgc3RydWN0dXJlLT50eXBlSW5mbygpLmdldE93blByb3BlcnR5
U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlKCkpCkBAIC0yOTgsMTQgKzI5OSwyMyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlECiAgICAgICAgICAgICAgICAg
Ly8gSWYgYSBraW5kIGlzIEdldEJ5SURLaW5kOjpEaXJlY3QsIHdlIGRvIG5vdCBuZWVkIHRvIGlu
dmVzdGlnYXRlIHByb3RvdHlwZSBjaGFpbnMgZnVydGhlci4KICAgICAgICAgICAgICAgICAvLyBD
YWNoZWFiaWxpdHkganVzdCBkZXBlbmRzIG9uIHRoZSBoZWFkIHN0cnVjdHVyZS4KICAgICAgICAg
ICAgICAgICBpZiAoa2luZCAhPSBHZXRCeUlES2luZDo6RGlyZWN0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGJvb2wgdXNlc1BvbHlQcm90bzsKLSAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBl
QWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3QsIHVzZXNQb2x5UHJvdG8pOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBJdCdzIGludmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90eXBlIHByb3BlcnR5
LgorICAgICAgICAgICAgICAgICAgICBhdXRvIHByb3RvdHlwZUNhY2hlUmVzdWx0ID0gcHJlcGFy
ZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJh
c2VDZWxsLCBzbG90KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVDYWNoZVJl
c3VsdCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworCisg
ICAgICAgICAgICAgICAgICAgIGlmIChwcm90b3R5cGVDYWNoZVJlc3VsdC0+ZmxhdHRlbmVkRGlj
dGlvbmFyeSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJvcGVydHkgb2Zmc2V0cyBt
YXkgaGF2ZSBjaGFuZ2VkIGR1ZSB0byBmbGF0dGVuaW5nLiBXZSdsbCBjYWNoZSBsYXRlci4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXNQb2x5UHJvdG8pIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RvdHlwZUNhY2hlUmVzdWx0LT51c2VzUG9seVBy
b3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBv
bHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBi
YXNlQ2VsbCwgc2xvdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFj
Y2Vzc0NoYWluKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQncyBpbnZhbGlk
IHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb3RvdHlwZUFjY2Vzc0No
YWluLT5zbG90QmFzZSgpLT5zdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpID09IG9m
ZnNldCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBXZSB1c2UgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgaW5zdGVhZCBmb3IgZmFz
dGVyIGFjY2Vzc2VzLgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hh
aW4gPSBudWxscHRyOwogCkBAIC0zMjYsMTAgKzMzNiwxMCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVHZXRCeUlECiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29u
ZGl0aW9uU2V0LmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
c2xvdC5pc1Vuc2V0KCkgfHwgY29uZGl0aW9uU2V0LnNsb3RCYXNlQ29uZGl0aW9uKCkub2Zmc2V0
KCkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIG9mZnNldCA9IHNsb3QuaXNVbnNldCgpID8gaW52YWxpZE9mZnNl
dCA6IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEpT
RnVuY3Rpb24qIGdldHRlciA9IG51bGxwdHI7CkBAIC00OTYsMTIgKzUwNiwxMSBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlECiAgICAgICAgICAgICAgICAgICAgIGlm
IChzdHJ1Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1
cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNl
VmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7
Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQotICAgICAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1
cmVDb25jdXJyZW50bHkoCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUsIGlkZW50
LmltcGwoKSwgMCwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZUNvbmN1cnJlbnRseShzdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSwgMCwgb2Zmc2V0KTsKICAgICAg
ICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSB8fCAhbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFj
Y2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBP
bkNhY2hlOwogCkBAIC01MTIsMjIgKzUyMSwyMyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlECiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKICAgICAgICAgICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CiAgICAgICAgICAgICAgICAgaWYg
KHB1dEtpbmQgPT0gTm90RGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlc1Bv
bHlQcm90bzsKLSAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5
UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFz
ZUNlbGwsIG51bGxwdHIsIHVzZXNQb2x5UHJvdG8pOwotICAgICAgICAgICAgICAgICAgICBpZiAo
IXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCdz
IGludmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90eXBlIHByb3BlcnR5LgorICAgICAgICAgICAg
ICAgICAgICBhdXRvIHByb3RvdHlwZUNhY2hlUmVzdWx0ID0gcHJlcGFyZVByb3RvdHlwZUNoYWlu
Rm9yQ2FjaGluZyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2VDZWxsLCBudWxscHRy
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVDYWNoZVJlc3VsdCkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VzUG9seVByb3RvKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChwcm90b3R5cGVDYWNoZVJlc3VsdC0+dXNlc1BvbHlQcm90bykg
eworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNl
bGwsIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nl
c3NDaGFpbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0J3MgaW52YWxpZCB0
byBhY2Nlc3MgdGhpcyBwcm90b3R5cGUgcHJvcGVydHkuCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwcm90
b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25k
aXRpb25TZXQgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQ29uZGl0aW9u
c0ZvclByb3BlcnR5U2V0dGVyTWlzcygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm0sIGNvZGVCbG9jaywgZXhlYywgbmV3U3RydWN0dXJlLCBpZGVudC5pbXBsKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJv
cGVydHlTZXR0ZXJNaXNzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLCBjb2RlQmxv
Y2ssIGV4ZWMsIG5ld1N0cnVjdHVyZSwgaWRlbnQuaW1wbCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgICAgICAgICAgICAgfQotCiAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6
OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBvZmZzZXQsIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBj
b25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKQEAgLTUzOCwxOCAr
NTQ4LDIwIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQKICAgICAg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlw
ZUFjY2Vzc0NoYWluOwogCiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuYmFzZSgpICE9IGJhc2VW
YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBib29sIHVzZXNQb2x5UHJvdG87Ci0gICAgICAg
ICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46
OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2VDZWxsLCBzbG90LmJhc2Uo
KSwgdXNlc1BvbHlQcm90byk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBlQWNj
ZXNzQ2hhaW4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0J3MgaW52YWxpZCB0byBh
Y2Nlc3MgdGhpcyBwcm90b3R5cGUgcHJvcGVydHkuCisgICAgICAgICAgICAgICAgICAgIGF1dG8g
cHJvdG90eXBlQ2FjaGVSZXN1bHQgPSBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3QuYmFzZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVDYWNoZVJlc3VsdCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChwcm90b3R5cGVDYWNoZVJlc3VsdC0+dXNlc1BvbHlQcm90bykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3ND
aGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3Qu
YmFzZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBlQWNjZXNzQ2hh
aW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIGludmFsaWQgdG8gYWNj
ZXNzIHRoaXMgcHJvdG90eXBlIHByb3BlcnR5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBl
QWNjZXNzQ2hhaW4gPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9u
U2V0ID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQ
cm90b3R5cGVQcm9wZXJ0eUhpdEN1c3RvbSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBzbG90LmJhc2UoKSwgaWRlbnQuaW1w
bCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0Zv
clByb3RvdHlwZVByb3BlcnR5SGl0Q3VzdG9tKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZtLCBjb2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5iYXNlKCksIGlkZW50LmltcGwo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICAg
ICAgICAgIH0KQEAgLTU2NCwyNyArNTc2LDMxIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZVB1dEJ5SUQKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBz
bG90LmNhY2hlZE9mZnNldCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuYmFzZSgpICE9
IGJhc2VWYWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBib29sIHVzZXNQb2x5UHJvdG87Ci0g
ICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNz
Q2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2VDZWxsLCBzbG90
LmJhc2UoKSwgdXNlc1BvbHlQcm90byk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcHJvdG90
eXBlQWNjZXNzQ2hhaW4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0J3MgaW52YWxp
ZCB0byBhY2Nlc3MgdGhpcyBwcm90b3R5cGUgcHJvcGVydHkuCisgICAgICAgICAgICAgICAgICAg
IGF1dG8gcHJvdG90eXBlQ2FjaGVSZXN1bHQgPSBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNo
aW5nKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3QuYmFzZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVDYWNoZVJlc3VsdCkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm90b3R5cGVDYWNoZVJlc3VsdC0+ZmxhdHRl
bmVkRGljdGlvbmFyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hl
TGF0ZXI7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VzUG9seVByb3RvKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChwcm90b3R5cGVDYWNoZVJlc3VsdC0+dXNlc1BvbHlQcm90bykg
eworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNl
bGwsIHNsb3QuYmFzZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBl
QWNjZXNzQ2hhaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIGludmFs
aWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90eXBlIHByb3BlcnR5LgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3RvdHlwZUFjY2Vzc0NoYWluLT5z
bG90QmFzZSgpLT5zdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpID09IG9mZnNldCk7
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBw
cm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
b25kaXRpb25TZXQgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQ29uZGl0
aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1Y3R1cmUsIHNsb3QuYmFzZSgpLCBpZGVudC5p
bXBsKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVD
b25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBzbG90LmJhc2UoKSwgaWRlbnQu
aW1wbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFs
aWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsK
IAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoY29uZGl0aW9uU2V0LnNsb3RCYXNlQ29u
ZGl0aW9uKCkuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAotICAgICAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gY29uZGl0aW9uU2V0LnNsb3RCYXNlQ29uZGl0aW9u
KCkub2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY29uZGl0aW9uU2V0
LnNsb3RCYXNlQ29uZGl0aW9uKCkub2Zmc2V0KCkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAg
ICAgICAgfQotCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKQEAgLTY2NywzNCArNjgzLDQ2IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKHNsb3Quc2xvdEJhc2UoKSAhPSBiYXNlKSB7Ci0gICAgICAgICAgICAg
ICAgYm9vbCB1c2VzUG9seVByb3RvOwotICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0No
YWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGJhc2UsIHNsb3QsIHVzZXNQb2x5UHJvdG8pOwotICAgICAgICAgICAgICAgIGlmICgh
cHJvdG90eXBlQWNjZXNzQ2hhaW4pIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gSXQncyBpbnZh
bGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAgICAgICAgICBh
dXRvIHByb3RvdHlwZUNhY2hlUmVzdWx0ID0gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGlu
ZyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2UsIHNsb3QpOworICAgICAgICAgICAg
ICAgIGlmICghcHJvdG90eXBlQ2FjaGVSZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAo
IXVzZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvdG90eXBlQ2FjaGVSZXN1
bHQtPmZsYXR0ZW5lZERpY3Rpb25hcnkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRy
eUNhY2hlTGF0ZXI7CisKKyAgICAgICAgICAgICAgICBpZiAocHJvdG90eXBlQ2FjaGVSZXN1bHQt
PnVzZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hh
aW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgYmFzZSwgc2xvdCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBlQWNj
ZXNzQ2hhaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0J3MgaW52YWxpZCB0byBh
Y2Nlc3MgdGhpcyBwcm90b3R5cGUgcHJvcGVydHkuCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQocHJvdG90eXBlQWNjZXNzQ2hhaW4tPnNsb3RCYXNlKCktPnN0cnVjdHVy
ZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSkgPT0gc2xvdC5jYWNoZWRPZmZzZXQoKSk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNz
Q2hhaW4gPSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5l
cmF0ZUNvbmRpdGlvbnNGb3JQcm90b3R5cGVQcm9wZXJ0eUhpdCgKICAgICAgICAgICAgICAgICAg
ICAgICAgIHZtLCBjb2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5zbG90QmFzZSgpLCBp
ZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1Zh
bGlkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGNvbmRpdGlvblNldC5zbG90QmFzZUNvbmRpdGlvbigp
Lm9mZnNldCgpID09IHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgdXNlc1BvbHlQ
cm90bzsKLSAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNz
Q2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2UsIHNsb3QsIHVz
ZXNQb2x5UHJvdG8pOwotICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewot
ICAgICAgICAgICAgICAgIC8vIEl0J3MgaW52YWxpZCB0byBhY2Nlc3MgdGhpcyBwcm90b3R5cGUg
cHJvcGVydHkuCisgICAgICAgICAgICBhdXRvIHByb3RvdHlwZUNhY2hlUmVzdWx0ID0gcHJlcGFy
ZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJh
c2UsIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVDYWNoZVJlc3VsdCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKCF1c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICBpZiAocHJvdG90eXBl
Q2FjaGVSZXN1bHQtPnVzZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICBwcm90b3R5cGVB
Y2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBiYXNlLCBzbG90KTsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlw
ZUFjY2Vzc0NoYWluKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEl0J3MgaW52YWxpZCB0byBh
Y2Nlc3MgdGhpcyBwcm90b3R5cGUgcHJvcGVydHkuCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBudWxscHRyOwogICAgICAg
ICAgICAgICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlz
cygKICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBp
ZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQo
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQotICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50
OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNs
b3RCYXNlKCkgPT0gYmFzZSkpOwogCkBAIC03NTQsNyArNzgyLDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuYwogICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1
cmUtPnByb3RvdHlwZVF1ZXJpZXNBcmVDYWNoZWFibGUoKSkgewogICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBUZWFjaCB0aGlzIHRvIGRvIHBvbHkgcHJvdG8uCiAgICAgICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTY2MwotCisgICAgICAg
ICAgICAgICAgcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIHZhbHVlLCB3YXNGb3VuZCA/IHByb3RvdHlwZSA6IG51bGxwdHIpOwogICAg
ICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldCA9IGdl
bmVyYXRlQ29uZGl0aW9uc0Zvckluc3RhbmNlT2YoCiAgICAgICAgICAgICAgICAgICAgIHZtLCBj
b2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwgcHJvdG90eXBlLCB3YXNGb3VuZCk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2
aXNpb24gMjUwOTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA5LDYgKzcwOSw4IEBAIHN0YXRpYyB2b2lkIHNl
dHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEUKICAgICAgICAgc3RydWN0dXJlLT5mbGF0dGVuRGlj
dGlvbmFyeVN0cnVjdHVyZSh2bSwganNDYXN0PEpTT2JqZWN0Kj4oYmFzZUNlbGwpKTsKICAgICB9
CiAKKyAgICBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3QpOworCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQgY29uZGl0aW9uczsKICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkpCiAgICAgICAgIGNvbmRp
dGlvbnMgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3Modm0sIGNvZGVCbG9jaywg
ZXhlYywgc3RydWN0dXJlLCBpZGVudC5pbXBsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAyNTA5NDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTMxLDcgKzExMzEsNyBAQCB2b2lkIFN0cnVjdHVyZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
CiAgICAgCiAgICAgY29uc3RfY2FzdDxTdHJ1Y3R1cmUqPih0aGlzKS0+Zm9yRWFjaFByb3BlcnR5
Q29uY3VycmVudGx5KAogICAgICAgICBbJl0gKGNvbnN0IFByb3BlcnR5TWFwRW50cnkmIGVudHJ5
KSAtPiBib29sIHsKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZW50cnkua2V5LCAiOiIs
IHN0YXRpY19jYXN0PGludD4oZW50cnkub2Zmc2V0KSk7CisgICAgICAgICAgICBvdXQucHJpbnQo
Y29tbWEsIGVudHJ5LmtleSwgIjoiLCBzdGF0aWNfY2FzdDxpbnQ+KGVudHJ5Lm9mZnNldCksICJ8
IiwgImdldHRlcj0iLCBlbnRyeS5hdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vz
c29yKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9KTsKICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0
YS5jcHAJKHJldmlzaW9uIDI1MDk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZVJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDExICsxMDcsMTMg
QEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9TdHJpbgogCiAgICAgICAgIC8v
IFRoaXMgd2lsbCBub3QgY3JlYXRlIGEgY29uZGl0aW9uIGZvciB0aGUgY3VycmVudCBzdHJ1Y3R1
cmUgYnV0IHRoYXQgaXMgZ29vZCBiZWNhdXNlIHdlIGtub3cgdGhlIFN5bWJvbC50b1N0cmluZ1Rh
ZwogICAgICAgICAvLyBpcyBub3Qgb24gdGhlIG93blN0cnVjdHVyZSBzbyB3ZSB3aWxsIHRyYW5z
aXNpdGlvbiBpZiBvbmUgaXMgYWRkZWQgYW5kIHRoaXMgY2FjaGUgd2lsbCBubyBsb25nZXIgYmUg
dXNlZC4KKyAgICAgICAgcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIG93blN0cnVjdHVyZSwgdG9TdHJpbmdUYWdTeW1ib2xTbG90LnNs
b3RCYXNlKCkpOwogICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQ
cm90b3R5cGVQcm9wZXJ0eUhpdCh2bSwgdGhpcywgZXhlYywgb3duU3RydWN0dXJlLCB0b1N0cmlu
Z1RhZ1N5bWJvbFNsb3Quc2xvdEJhc2UoKSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdT
eW1ib2wuaW1wbCgpKTsKICAgICAgICAgQVNTRVJUKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpIHx8
IGNvbmRpdGlvblNldC5oYXNPbmVTbG90QmFzZUNvbmRpdGlvbigpKTsKLSAgICB9IGVsc2UgaWYg
KHRvU3RyaW5nVGFnU3ltYm9sU2xvdC5pc1Vuc2V0KCkpCisgICAgfSBlbHNlIGlmICh0b1N0cmlu
Z1RhZ1N5bWJvbFNsb3QuaXNVbnNldCgpKSB7CisgICAgICAgIHByZXBhcmVQcm90b3R5cGVDaGFp
bkZvckNhY2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBvd25TdHJ1Y3R1cmUsIG51
bGxwdHIpOwogICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9w
ZXJ0eU1pc3Modm0sIHRoaXMsIGV4ZWMsIG93blN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+
dG9TdHJpbmdUYWdTeW1ib2wuaW1wbCgpKTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkgewpJbmRleDogVG9v
bHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCShyZXZpc2lvbiAyNTA5NDgpCisrKyBUb29scy9TY3Jp
cHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsNyArNDg4LDcg
QEAgJG51bVBhc3NlcyA9IDAKIAogIyBXZSBmb3JjZSBhbGwgdGVzdHMgdG8gdXNlIGEgc21hbGxl
ciAoMS41TSkgc3RhY2sgc28gdGhhdCBzdGFjayBvdmVyZmxvdyB0ZXN0cyBjYW4gcnVuIGZhc3Rl
ci4KIEJBU0VfT1BUSU9OUyA9IFsiLS11c2VGVExKSVQ9ZmFsc2UiLCAiLS11c2VGdW5jdGlvbkRv
dEFyZ3VtZW50cz10cnVlIiwgIi0tdmFsaWRhdGVFeGNlcHRpb25DaGVja3M9dHJ1ZSIsICItLXVz
ZURvbGxhclZNPXRydWUiLCAiLS1tYXhQZXJUaHJlYWRTdGFja1VzYWdlPTE1NzI4NjQiXQotRUFH
RVJfT1BUSU9OUyA9IFsiLS10aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0xMCIsICItLXRocmVz
aG9sZEZvckpJVFNvb249MTAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwPTIw
IiwgIi0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA9MjAiLCAiLS10aHJlc2hv
bGRGb3JPcHRpbWl6ZVNvb249MjAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2Fy
bVVwPTIwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uPTIwIiwgIi0tdGhyZXNob2xk
Rm9yT01HT3B0aW1pemVBZnRlcldhcm1VcD0yMCIsICItLXRocmVzaG9sZEZvck9NR09wdGltaXpl
U29vbj0yMCIsICItLW1heGltdW1FdmFsQ2FjaGVhYmxlU291cmNlTGVuZ3RoPTE1MDAwMCIsICIt
LXVzZUVhZ2VyQ29kZUJsb2NrSmV0dGlzb25UaW1pbmc9dHJ1ZSJdCitFQUdFUl9PUFRJT05TID0g
WyItLXRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPTEwIiwgIi0tdGhyZXNob2xkRm9ySklUU29v
bj0xMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hv
bGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcD0yMCIsICItLXRocmVzaG9sZEZvck9wdGltaXpl
U29vbj0yMCIsICItLXRocmVzaG9sZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10
aHJlc2hvbGRGb3JGVExPcHRpbWl6ZVNvb249MjAiLCAiLS10aHJlc2hvbGRGb3JPTUdPcHRpbWl6
ZUFmdGVyV2FybVVwPTIwIiwgIi0tdGhyZXNob2xkRm9yT01HT3B0aW1pemVTb29uPTIwIiwgIi0t
bWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5ndGg9MTUwMDAwIiwgIi0tdXNlRWFnZXJDb2Rl
QmxvY2tKZXR0aXNvblRpbWluZz10cnVlIiwgIi0tcmVwYXRjaEJ1ZmZlcmluZ0NvdW50ZG93bj0w
Il0KICMgTk9URTogVGVzdHMgcmVseSBvbiB0aGlzIHVzaW5nIHNjcmliYmxlRnJlZUNlbGxzLgog
Tk9fQ0pJVF9PUFRJT05TID0gWyItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiLCAiLS10aHJlc2hv
bGRGb3JKSVRBZnRlcldhcm1VcD0xMDAiLCAiLS1zY3JpYmJsZUZyZWVDZWxscz10cnVlIl0KIEIz
TzFfT1BUSU9OUyA9IFsiLS1kZWZhdWx0QjNPcHRMZXZlbD0xIl0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380796</attachid>
            <date>2019-10-11 15:47:48 -0700</date>
            <delta_ts>2019-10-11 16:34:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>32594</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTA5NDgpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE5LTEwLTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIENhbm9uaWNhbGl6ZSBob3cgd2UgcHJlcGFyZSB0aGUgcHJvdG90eXBl
IGNoYWluIGZvciBpbmxpbmUgY2FjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjE5Mzkx
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0
cmVzcy9jYWNoZS1jb3JyZWN0LW9mZnNldC1hZnRlci1mbGF0dGVuaW5nLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGFzc2VydCk6CisKIDIwMTktMTAtMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsIG91dCByMjUwODc4CkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy9jYWNoZS1jb3JyZWN0LW9mZnNldC1hZnRlci1mbGF0dGVuaW5nLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2NhY2hlLWNvcnJlY3Qtb2Zmc2V0LWFmdGVyLWZs
YXR0ZW5pbmcuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvY2FjaGUtY29ycmVj
dC1vZmZzZXQtYWZ0ZXItZmxhdHRlbmluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0
IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yOworfQorCitsZXQgcCA9IHt9OworbGV0IG8gPSB7fTsKK28uX19wcm90b19fID0gcDsK
KworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICBwWyJwIiArIGldID0gaTsK
K30KK3AuZm9vID0gNDI7CitkZWxldGUgcC5wMDsKK2RlbGV0ZSBwLnAxOworZGVsZXRlIHAucDI7
CitkZWxldGUgcC5wMzsKK2RlbGV0ZSBwLnA0OworZGVsZXRlIHAucDU7CisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgMTA7ICsraSkgeworICAgIHAuZm9vID0gaTsKKyAgICBhc3NlcnQoby5mb28gPT09
IGkpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTA5NDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDcgQEAKKzIwMTktMTAtMTEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisK
KyAgICAgICAgQ2Fub25pY2FsaXplIGhvdyB3ZSBwcmVwYXJlIHRoZSBwcm90b3R5cGUgY2hhaW4g
Zm9yIGlubGluZSBjYWNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDI4MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MTkzOTE5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2Fub25pY2FsaXplcyBob3cgd2UgcHJlcGFyZSB0aGUgcHJvdG90eXBlIGNoYWluIGZvciBjYWNo
aW5nLiBCb3RoCisgICAgICAgIGluIHRoZSBwb2x5IHByb3RvIGNoYWluLCBhbmQgdGhlIGdlbmVy
YXRlQ29uZGl0aW9ucyosIHdlIHdlcmUgZmxhdHRlbmluZworICAgICAgICBkaWN0aW9uYXJpZXMg
YXMgd2Ugd2FsayB0aGUgcHJvdG90eXBlIGNoYWluLiBXZSBub3cgdW5pZnkgdGhhdCBpbnRvIG9u
ZQorICAgICAgICBmdW5jdGlvbiBjYWxsZWQgYHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hp
bmdgLiBJbiB0aGF0LCB3ZSBmbGF0dGVuCisgICAgICAgIGRpY3Rpb25hcmllcyBhcyB3ZSB0cmF2
ZXJzZSB0aGUgcHJvdG90eXBlIGNoYWluLCBhbmQgbm90ZSBpZiBhbnkgb2JqZWN0cworICAgICAg
ICBhcmUgcG9seSBwcm90by4KKyAgICAgICAgCisgICAgICAgIE15IHBhdGNoIGluIHIyNTA1NDAg
bWFkZSBpdCBzbyB3ZSBub3cgZmxhdHRlbiB1bmNhY2hlYWJsZSBkaWN0aW9uYXJpZXMgKHRoaXMK
KyAgICAgICAgd2FzIHRoZSBpbnRlbnRpb24gYWxsIGFsb25nLCBidXQgaXQgd2FzIGEgcGVyZiBi
dWcgdGhhdCB3ZSBkaWRuJ3QgZG8gdGhpcykuIFRoYXQKKyAgICAgICAgcmV2ZWFsZWQgdGhhdCB0
aGUgaW5saW5lIGNhY2hpbmcgY29kZSBjb3VsZCB1c2UgYSBzdGFsZSBQcm9wZXJ0eU9mZnNldCB3
aGVuCisgICAgICAgIGZsYXR0ZW5pbmcgYW4gdW5jYWNoZWFibGUgZGljdGlvbmFyeS4gVGhpcyBw
YXRjaCBtYWtlcyBpdCBzbyB3ZSB1bml2ZXJzYWxseQorICAgICAgICB0cnkganVzdCBkZWZlciBj
YWNoaW5nIHRvIGxhdGVyIGxhdGVyIGlmIHdlIGVuY291bnRlciBhIHNpdHVhdGlvbiB3aGVyZSB3
ZQorICAgICAgICBmbGF0dGVuIGEgZGljdGlvbmFyeSB0aGF0IGNvdWxkIGJlIGEgcHJvcGVydHkg
aG9sZGVyLgorCisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQu
Y3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm90b3R5cGVFcXVpdmFs
ZW5jZUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OmdlbmVyYXRlQ29uZGl0aW9uc0ZvclBy
b3BlcnR5TWlzc0NvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OmdlbmVyYXRlQ29uZGl0aW9u
c0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OnByZXBh
cmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgICogYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNz
Q2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKToK
KyAgICAgICAgKiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlND
OjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6c2xvdEJhc2VTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAg
ICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAg
ICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbkJ5
SUQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3RhbmNlT2YpOgorICAgICAgICAqIGxsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldHVwR2V0QnlJZFBy
b3RvdHlwZUNhY2hlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmpl
Y3RUb1N0cmluZ1ZhbHVlKToKKwogMjAxOS0xMC0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBUcnkgdG8gZml4IGJ1aWxkIGZvciBXaW5k
b3dzIENfTE9PUApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCShyZXZpc2lvbiAyNTA5
NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsMTQgKzI2Nyw5IEBAIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGdlbmVyYXRlQ29uZGl0aW8KICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1lbnVtIENvbmN1cnJlbmN5IHsKLSAgICBNYWluVGhyZWFkLAotICAgIENvbmN1cnJlbnQKLX07
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQg
Z2VuZXJhdGVDb25kaXRpb25zKAotICAgIFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IsCi0gICAgQ29uY3VycmVuY3kgY29uY3VycmVuY3kgPSBNYWluVGhyZWFk
KQorICAgIFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7
CiAgICAgVmVjdG9yPE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiBjb25kaXRpb25zOwogICAgIApA
QCAtMzE0LDIxICszMDksOSBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNv
bmRpCiAgICAgICAgIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBp
ZiAoY29uY3VycmVuY3kgPT0gTWFpblRocmVhZCkgewotICAgICAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkRpY3Rpb25hcnkgaGFzIGJlZW4gZmxhdHRlbmVkIGJl
Zm9yZSwgc28gaW52YWxpZC5cbiIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVy
Ym9zZSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRmxhdHRlbmluZyAiLCBwb2ludGVy
RHVtcChzdHJ1Y3R1cmUpKTsKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0
aW9uYXJ5U3RydWN0dXJlKHZtLCBvYmplY3QpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9z
ZSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2Fubm90IGZsYXR0ZW4gZGljdGlvbmFy
eSB3aGVuIG5vdCBvbiBtYWluIHRocmVhZCwgc28gaW52YWxpZC5cbiIpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJu
YWw6OnZlcmJvc2UpCisgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2Fubm90IGNhY2hlIGRpY3Rp
b25hcnkuXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dDo6aW52YWxpZCgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFmdW5jdG9yKGNvbmRpdGlv
bnMsIG9iamVjdCkpIHsKQEAgLTQ4Nyw3ICs0NzAsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCBnZW5lcmF0ZUNvbmRpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgY29uZGl0aW9ucy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9LCBDb25jdXJyZW50KTsKKyAgICAgICAgfSk7CiB9CiAKIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzc0NvbmN1cnJl
bnRseSgKQEAgLTUwMSw3ICs0ODQsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5l
cmF0ZUNvbmRpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29u
ZGl0aW9ucy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9LCBDb25jdXJyZW50KTsKKyAgICAgICAgfSk7CiB9CiAKIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRs
eSgKQEAgLTUxNiw3ICs0OTksNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0
ZUNvbmRpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29uZGl0
aW9ucy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
LCBDb25jdXJyZW50KTsKKyAgICAgICAgfSk7CiB9CiAKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGdlbmVyYXRlQ29uZGl0aW9uRm9yU2VsZkVxdWl2YWxlbmNlKApAQCAtNTI1LDUgKzUwOCw4MSBA
QCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvCiAgICAgcmV0dXJuIGdl
bmVyYXRlQ29uZGl0aW9uKHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIFByb3BlcnR5Q29uZGl0aW9u
OjpFcXVpdmFsZW5jZSk7CiB9CiAKKy8vIEN1cnJlbnQgbWlnaHQgYmUgbnVsbC4gU3RydWN0dXJl
IGNhbid0IGJlIG51bGwuCitzdGF0aWMgT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3Rh
dHVzPiBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogY3VycmVudCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0
KiB0YXJnZXQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgYm9v
bCBmb3VuZCA9IGZhbHNlOworICAgIGJvb2wgdXNlc1BvbHlQcm90byA9IGZhbHNlOworICAgIGJv
b2wgZmxhdHRlbmVkRGljdGlvbmFyeSA9IGZhbHNlOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgIGlmICgh
Y3VycmVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5
U3RydWN0dXJlKHZtLCBhc09iamVjdChjdXJyZW50KSk7CisgICAgICAgICAgICBmbGF0dGVuZWRE
aWN0aW9uYXJ5ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc3RydWN0dXJlLT5w
cm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudCA9
PSB0YXJnZXQpIHsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ugb25seSBoYXZlIHBvbHkgcHJvdG8gaWYgd2Ug
bmVlZCB0byBhY2Nlc3Mgb3VyIHByb3RvdHlwZSB2aWEKKyAgICAgICAgLy8gdGhlIHBvbHkgcHJv
dG8gcHJvdG9jb2wuIElmIHRoZSBzbG90IGJhc2UgaXMgdGhlIG9ubHkgcG9seSBwcm90bworICAg
ICAgICAvLyB0aGluZyBpbiB0aGUgY2hhaW4sIGFuZCB3ZSBoYXZlIGEgY2FjaGUgaGl0IG9uIGl0
LCB0aGVuIHdlJ3JlIG5vdAorICAgICAgICAvLyBwb2x5IHByb3RvLgorICAgICAgICBpZiAoc3Ry
dWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgeworICAgICAgICAgICAgaWYgKCFjdXJyZW50KQorICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICB1c2VzUG9seVBy
b3RvID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gc3Ry
dWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoZ2xvYmFsT2JqZWN0LCBjdXJyZW50KTsKKyAgICAg
ICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
dXJyZW50ID0gYXNPYmplY3QocHJvdG90eXBlKTsKKyAgICAgICAgc3RydWN0dXJlID0gY3VycmVu
dC0+c3RydWN0dXJlKHZtKTsKKyAgICB9CisKKyAgICBpZiAoIWZvdW5kICYmICEhdGFyZ2V0KQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgUHJvdG90eXBlQ2hhaW5DYWNoaW5n
U3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQudXNlc1BvbHlQcm90byA9IHVzZXNQb2x5UHJvdG87
CisgICAgcmVzdWx0LmZsYXR0ZW5lZERpY3Rpb25hcnkgPSBmbGF0dGVuZWREaWN0aW9uYXJ5Owor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5n
U3RhdHVzPiBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCkKK3sKKyAgICByZXR1
cm4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2UsIGJh
c2UtPnN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnZtKCkpLCB0YXJnZXQpOworfQorCitPcHRpb25h
bDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNh
Y2hpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNPYmplY3QqIHRhcmdldCA9IHNsb3QuaXNVbnNl
dCgpID8gbnVsbHB0ciA6IHNsb3Quc2xvdEJhc2UoKTsKKyAgICByZXR1cm4gcHJlcGFyZVByb3Rv
dHlwZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2UsIHRhcmdldCk7Cit9CisKK09w
dGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWlu
Rm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIGJhc2VT
dHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCit7CisgICAgcmV0dXJuIHByZXBhcmVQcm90b3R5
cGVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBiYXNlU3RydWN0dXJlLCB0
YXJnZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmgJKHJldmlzaW9uIDI1MDk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNCAr
MTg5LDEzIEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGkKIE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVy
TWlzc0NvbmN1cnJlbnRseSgKICAgICBWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBo
ZWFkU3RydWN0dXJlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAorc3RydWN0IFByb3RvdHlw
ZUNoYWluQ2FjaGluZ1N0YXR1cyB7CisgICAgYm9vbCB1c2VzUG9seVByb3RvOworICAgIGJvb2wg
ZmxhdHRlbmVkRGljdGlvbmFyeTsKK307CisKK09wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGlu
Z1N0YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90Jik7CitPcHRpb25hbDxQcm90b3R5cGVD
aGFpbkNhY2hpbmdTdGF0dXM+IHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpOworT3B0aW9uYWw8UHJv
dG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5n
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KTsKKwog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seVByb3RvQWNjZXNzQ2hhaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAJKHJldmlzaW9uIDI1MDk0OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDMzICszMSwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3ND
aGFpbjo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBib29sJiB1c2VzUG9seVByb3RvKQorc3RkOjp1bmlx
dWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBzbG90LmlzVW5zZXQoKSA/
IG51bGxwdHIgOiBzbG90LnNsb3RCYXNlKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmpl
Y3QsIGJhc2UsIHRhcmdldCwgdXNlc1BvbHlQcm90byk7CisgICAgcmV0dXJuIGNyZWF0ZShnbG9i
YWxPYmplY3QsIGJhc2UsIHRhcmdldCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQsIGJvb2wmIHVzZXNQ
b2x5UHJvdG8pCitzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IFBvbHlQcm90
b0FjY2Vzc0NoYWluOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KQogewogICAgIEpTQ2VsbCogY3VycmVudCA9IGJhc2U7
CiAgICAgVk0mIHZtID0gYmFzZS0+dm0oKTsKIAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKIAot
ICAgIHVzZXNQb2x5UHJvdG8gPSBmYWxzZTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4gcmVzdWx0KG5ldyBQb2x5UHJvdG9BY2Nlc3NDaGFpbigpKTsKIAogICAg
IGZvciAodW5zaWduZWQgaXRlcmF0aW9uTnVtYmVyID0gMDsgdHJ1ZTsgKytpdGVyYXRpb25OdW1i
ZXIpIHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjdXJyZW50LT5zdHJ1Y3R1cmUo
dm0pOwogCi0gICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKLSAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgICAgICAgICAgc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVj
dHVyZSh2bSwgYXNPYmplY3QoY3VycmVudCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICAgICAgaWYgKCFzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzcsMTIgKzcwLDYgQEAgc3RkOjp1bmlxdWVf
cHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQbwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICAvLyBXZSBvbmx5IGhhdmUgcG9seSBwcm90byBpZiB3ZSBuZWVkIHRvIGFj
Y2VzcyBvdXIgcHJvdG90eXBlIHZpYQotICAgICAgICAvLyB0aGUgcG9seSBwcm90byBwcm90b2Nv
bC4gSWYgdGhlIHNsb3QgYmFzZSBpcyB0aGUgb25seSBwb2x5IHByb3RvCi0gICAgICAgIC8vIHRo
aW5nIGluIHRoZSBjaGFpbiwgYW5kIHdlIGhhdmUgYSBjYWNoZSBoaXQgb24gaXQsIHRoZW4gd2Un
cmUgbm90Ci0gICAgICAgIC8vIHBvbHkgcHJvdG8uCi0gICAgICAgIHVzZXNQb2x5UHJvdG8gfD0g
c3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKTsKLQogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGdsb2JhbE9iamVjdCwgY3VycmVudCk7CiAg
ICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nl
c3NDaGFpbi5oCShyZXZpc2lvbiAyNTA5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIs
OCBAQCBwdWJsaWM6CiAgICAgUG9seVByb3RvQWNjZXNzQ2hhaW4oUG9seVByb3RvQWNjZXNzQ2hh
aW4mKSA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZXR1cm5zIG51bGxwdHIgd2hlbiBpbnZhbGlkLgot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNyZWF0ZShK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90JiwgYm9vbCYg
dXNlc1BvbHlQcm90byk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4gY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBiYXNlLCBKU09iamVjdCog
dGFyZ2V0LCBib29sJiB1c2VzUG9seVByb3RvKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJh
c2UsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwg
SlNPYmplY3QqIHRhcmdldCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IGNsb25lKCkKICAgICB7CkBAIC03Myw2ICs3MywxMyBAQCBwdWJsaWM6CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBTdHJ1Y3R1cmUqIHNsb3RCYXNlU3RydWN0dXJlKFN0cnVjdHVyZSog
YmFzZVN0cnVjdHVyZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2NoYWluLnNpemUoKSkK
KyAgICAgICAgICAgIHJldHVybiBtX2NoYWluLmxhc3QoKTsKKyAgICAgICAgcmV0dXJuIGJhc2VT
dHJ1Y3R1cmU7CisgICAgfQorCiBwcml2YXRlOgogICAgIFBvbHlQcm90b0FjY2Vzc0NoYWluKCkg
PSBkZWZhdWx0OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJl
dmlzaW9uIDI1MDk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVHZXRCeUlECiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhh
c0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0
aW9uYXJ5U3RydWN0dXJlKHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlQ2VsbCkpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOyAvLyBXZSBtYXkgaGF2ZSBjaGFu
Z2VkIHByb3BlcnR5IG9mZnNldHMuCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg
ICAgaWYgKHNsb3QuaXNVbnNldCgpICYmIHN0cnVjdHVyZS0+dHlwZUluZm8oKS5nZXRPd25Qcm9w
ZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSgpKQpAQCAtMjk4LDE0ICsyOTksMjEg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogICAgICAgICAgICAg
ICAgIC8vIElmIGEga2luZCBpcyBHZXRCeUlES2luZDo6RGlyZWN0LCB3ZSBkbyBub3QgbmVlZCB0
byBpbnZlc3RpZ2F0ZSBwcm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCiAgICAgICAgICAgICAgICAg
Ly8gQ2FjaGVhYmlsaXR5IGp1c3QgZGVwZW5kcyBvbiB0aGUgaGVhZCBzdHJ1Y3R1cmUuCiAgICAg
ICAgICAgICAgICAgaWYgKGtpbmQgIT0gR2V0QnlJREtpbmQ6OkRpcmVjdCkgewotICAgICAgICAg
ICAgICAgICAgICBib29sIHVzZXNQb2x5UHJvdG87Ci0gICAgICAgICAgICAgICAgICAgIHByb3Rv
dHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIGJhc2VDZWxsLCBzbG90LCB1c2VzUG9seVByb3RvKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9w
ZXJ0eS4KKyAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVQcm90
b3R5cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2Vs
bCwgc2xvdCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICAgICAgICAg
ICAgICBpZiAoY2FjaGVTdGF0dXMtPmZsYXR0ZW5lZERpY3Rpb25hcnkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFByb3BlcnR5IG9mZnNldHMgbWF5IGhhdmUgY2hhbmdlZCBkdWUgdG8g
ZmxhdHRlbmluZy4gV2UnbGwgY2FjaGUgbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCF1c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICAgICAg
cHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3QpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBwcm90b3R5cGVBY2Nlc3ND
aGFpbi0+c2xvdEJhc2VTdHJ1Y3R1cmUoc3RydWN0dXJlKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUp
ID09IG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBXZSB1c2UgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgaW5zdGVhZCBm
b3IgZmFzdGVyIGFjY2Vzc2VzLgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNj
ZXNzQ2hhaW4gPSBudWxscHRyOwogCkBAIC0zMTgsNiArMzI2LDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1
Y3R1cmUsIHNsb3Quc2xvdEJhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lLmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkgfHwgY29uZGl0aW9uU2V0LnNsb3RCYXNl
Q29uZGl0aW9uKCkub2Zmc2V0KCkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2Vu
ZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXRDdXN0b20oCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwgc2xv
dC5zbG90QmFzZSgpLApAQCAtMzI4LDggKzMzNyw2IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUdldEJ5SUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIG9mZnNldCA9IHNsb3QuaXNVbnNldCgpID8gaW52YWxpZE9mZnNldCA6
IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEpTRnVu
Y3Rpb24qIGdldHRlciA9IG51bGxwdHI7CkBAIC00OTYsMTIgKzUwMywxMSBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlECiAgICAgICAgICAgICAgICAgICAgIGlmIChz
dHJ1Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUt
PmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlVmFs
dWUpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0g
ICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQotICAgICAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVD
b25jdXJyZW50bHkoCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUsIGlkZW50Lmlt
cGwoKSwgMCwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUNv
bmN1cnJlbnRseShzdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSwgMCwgb2Zmc2V0KTsKICAgICAgICAg
ICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSB8fCAhbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vz
c2VzQXJlQ2FjaGVhYmxlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwogCkBAIC01MTIsMjIgKzUxOCwyMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVQdXRCeUlECiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0Fj
Y2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKICAgICAgICAgICAgICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CiAgICAgICAgICAgICAgICAgaWYgKHB1
dEtpbmQgPT0gTm90RGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlc1BvbHlQ
cm90bzsKLSAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNl
bGwsIG51bGxwdHIsIHVzZXNQb2x5UHJvdG8pOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXBy
b3RvdHlwZUFjY2Vzc0NoYWluKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIGlu
dmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90eXBlIHByb3BlcnR5LgorICAgICAgICAgICAgICAg
ICAgICBhdXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2VDZWxsLCBudWxscHRyKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjYWNoZVN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCF1c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChj
YWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJv
dG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIG51bGxwdHIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVsbHB0
cjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlTZXR0ZXJNaXNzKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBuZXdT
dHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRp
b25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eVNldHRlck1pc3MoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZXhlYywgbmV3U3RydWN0dXJlLCBp
ZGVudC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQu
aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwogICAgICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIG9m
ZnNldCwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90
b3R5cGVBY2Nlc3NDaGFpbikpOwpAQCAtNTM4LDE4ICs1NDMsMTggQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRAogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAKICAgICAgICAg
ICAgICAgICBpZiAoc2xvdC5iYXNlKCkgIT0gYmFzZVZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGJvb2wgdXNlc1BvbHlQcm90bzsKLSAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNj
ZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3QuYmFzZSgpLCB1c2VzUG9seVByb3RvKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9w
ZXJ0eS4KKyAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVQcm90
b3R5cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2Vs
bCwgc2xvdC5iYXNlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXNQb2x5UHJvdG8pIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RhdHVzLT51c2VzUG9seVByb3RvKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0Fj
Y2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwg
c2xvdC5iYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nl
c3NDaGFpbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbmRpdGlvblNldCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVDb25k
aXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXRDdXN0b20oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5iYXNlKCks
IGlkZW50LmltcGwoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpO
b25lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNv
bmRpdGlvbnNGb3JQcm90b3R5cGVQcm9wZXJ0eUhpdEN1c3RvbSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1Y3R1cmUsIHNsb3QuYmFzZSgpLCBp
ZGVudC5pbXBsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9u
ZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgp
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAg
ICAgICAgICAgICAgICAgICB9CkBAIC01NjQsMjcgKzU2OSwyOSBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlECiAgICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKIAogICAgICAgICAgICAgICAgIGlmIChzbG90
LmJhc2UoKSAhPSBiYXNlVmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VzUG9s
eVByb3RvOwotICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQ
cm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNl
Q2VsbCwgc2xvdC5iYXNlKCksIHVzZXNQb2x5UHJvdG8pOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJ
dCdzIGludmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90eXBlIHByb3BlcnR5LgorICAgICAgICAg
ICAgICAgICAgICBhdXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2Fj
aGluZyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2VDZWxsLCBzbG90LmJhc2UoKSk7
CisgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0dXMtPmZsYXR0ZW5lZERpY3Rpb25hcnkpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogCi0gICAgICAg
ICAgICAgICAgICAgIGlmICghdXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoY2FjaGVTdGF0dXMtPnVzZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2VDZWxsLCBzbG90LmJhc2UoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQocHJvdG90eXBlQWNjZXNzQ2hhaW4tPnNsb3RCYXNlU3RydWN0
dXJlKGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pKS0+Z2V0KHZtLCBpZGVudC5pbXBsKCkpID09IG9m
ZnNldCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjb25kaXRpb25TZXQgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRl
Q29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1Y3R1cmUsIHNsb3QuYmFzZSgpLCBp
ZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2Vu
ZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXQoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBzbG90LmJhc2UoKSwg
aWRlbnQuaW1wbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0
LmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25D
YWNoZTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoY29uZGl0aW9uU2V0LnNsb3RC
YXNlQ29uZGl0aW9uKCkuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29y
KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAot
ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gY29uZGl0aW9uU2V0LnNsb3RCYXNlQ29u
ZGl0aW9uKCkub2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChjb25kaXRpb25TZXQuc2xvdEJhc2VDb25kaXRpb24oKS5vZmZzZXQoKSA9PSBvZmZzZXQpOwog
ICAgICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBuZXdDYXNlID0gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKApAQCAtNjY3LDM0
ICs2NzQsNDMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpICE9IGJhc2UpIHsK
LSAgICAgICAgICAgICAgICBib29sIHVzZXNQb2x5UHJvdG87Ci0gICAgICAgICAgICAgICAgcHJv
dG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgc2xvdCwgdXNlc1BvbHlQcm90byk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAgICAgICAg
ICAvLyBJdCdzIGludmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90eXBlIHByb3BlcnR5LgorICAg
ICAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JD
YWNoaW5nKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgc2xvdCk7CisgICAgICAg
ICAgICAgICAgaWYgKCFjYWNoZVN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdp
dmVVcE9uQ2FjaGU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghdXNl
c1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+ZmxhdHRlbmVk
RGljdGlvbmFyeSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsK
KworICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgeworICAg
ICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0No
YWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlLCBzbG90KTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgcHJvdG90eXBlQWNjZXNz
Q2hhaW4tPnNsb3RCYXNlU3RydWN0dXJlKHN0cnVjdHVyZSktPmdldCh2bSwgaWRlbnQuaW1wbCgp
KSA9PSBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlw
ZVByb3BlcnR5SGl0KAogICAgICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZXhl
Yywgc3RydWN0dXJlLCBzbG90LnNsb3RCYXNlKCksIGlkZW50LmltcGwoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgY29uZGl0aW9uU2V0LnNsb3RCYXNl
Q29uZGl0aW9uKCkub2Zmc2V0KCkgPT0gc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYm9v
bCB1c2VzUG9seVByb3RvOwotICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5
UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFz
ZSwgc2xvdCwgdXNlc1BvbHlQcm90byk7Ci0gICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vz
c0NoYWluKSB7Ci0gICAgICAgICAgICAgICAgLy8gSXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlz
IHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVw
YXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
YmFzZSwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAg
ICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBpZiAoIXVzZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNl
c1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9s
eVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJh
c2UsIHNsb3QpOworICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBlQWNjZXNzQ2hhaW4pCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7CiAg
ICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVy
dHlNaXNzKAogICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1Y3R1
cmUsIGlkZW50LmltcGwoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNW
YWxpZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkp
Ci0gICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAogICAgICAgICBMT0dfSUMoKElD
RXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNs
b3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAKQEAgLTc1NCw3ICs3NzAsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jCiAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0
cnVjdHVyZS0+cHJvdG90eXBlUXVlcmllc0FyZUNhY2hlYWJsZSgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFRlYWNoIHRoaXMgdG8gZG8gcG9seSBwcm90by4KICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NjYzCi0KKyAg
ICAgICAgICAgICAgICBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgdmFsdWUsIHdhc0ZvdW5kID8gcHJvdG90eXBlIDogbnVsbHB0cik7
CiAgICAgICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0
ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9ySW5zdGFuY2VPZigKICAgICAgICAgICAgICAgICAgICAg
dm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBwcm90b3R5cGUsIHdhc0ZvdW5kKTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CShyZXZpc2lvbiAyNTA5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDksNiArNzA5LDggQEAgc3RhdGljIHZv
aWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoRQogICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0
ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlQ2VsbCkpOwog
ICAgIH0KIAorICAgIHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwgc2xvdCk7CisKICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCBjb25kaXRpb25zOwogICAgIGlmIChzbG90LmlzVW5zZXQoKSkKICAgICAgICAg
Y29uZGl0aW9ucyA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgY29kZUJs
b2NrLCBleGVjLCBzdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDI1MDk0OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMzEsNyArMTEzMSw3IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGMKICAgICAKICAgICBjb25zdF9jYXN0PFN0cnVjdHVyZSo+KHRoaXMpLT5mb3JFYWNoUHJv
cGVydHlDb25jdXJyZW50bHkoCiAgICAgICAgIFsmXSAoY29uc3QgUHJvcGVydHlNYXBFbnRyeSYg
ZW50cnkpIC0+IGJvb2wgewotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBlbnRyeS5rZXks
ICI6Iiwgc3RhdGljX2Nhc3Q8aW50PihlbnRyeS5vZmZzZXQpKTsKKyAgICAgICAgICAgIG91dC5w
cmludChjb21tYSwgZW50cnkua2V5LCAiOiIsIHN0YXRpY19jYXN0PGludD4oZW50cnkub2Zmc2V0
KSwgInwiLCAiZ2V0dGVyPSIsIGVudHJ5LmF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6
QWNjZXNzb3IpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0pOwogICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJh
cmVEYXRhLmNwcAkocmV2aXNpb24gMjUwOTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTEgKzEw
NywxMyBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluCiAKICAgICAg
ICAgLy8gVGhpcyB3aWxsIG5vdCBjcmVhdGUgYSBjb25kaXRpb24gZm9yIHRoZSBjdXJyZW50IHN0
cnVjdHVyZSBidXQgdGhhdCBpcyBnb29kIGJlY2F1c2Ugd2Uga25vdyB0aGUgU3ltYm9sLnRvU3Ry
aW5nVGFnCiAgICAgICAgIC8vIGlzIG5vdCBvbiB0aGUgb3duU3RydWN0dXJlIHNvIHdlIHdpbGwg
dHJhbnNpc2l0aW9uIGlmIG9uZSBpcyBhZGRlZCBhbmQgdGhpcyBjYWNoZSB3aWxsIG5vIGxvbmdl
ciBiZSB1c2VkLgorICAgICAgICBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgb3duU3RydWN0dXJlLCB0b1N0cmluZ1RhZ1N5bWJvbFNs
b3Quc2xvdEJhc2UoKSk7CiAgICAgICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9u
c0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KHZtLCB0aGlzLCBleGVjLCBvd25TdHJ1Y3R1cmUsIHRv
U3RyaW5nVGFnU3ltYm9sU2xvdC5zbG90QmFzZSgpLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
Z1RhZ1N5bWJvbC5pbXBsKCkpOwogICAgICAgICBBU1NFUlQoIWNvbmRpdGlvblNldC5pc1ZhbGlk
KCkgfHwgY29uZGl0aW9uU2V0Lmhhc09uZVNsb3RCYXNlQ29uZGl0aW9uKCkpOwotICAgIH0gZWxz
ZSBpZiAodG9TdHJpbmdUYWdTeW1ib2xTbG90LmlzVW5zZXQoKSkKKyAgICB9IGVsc2UgaWYgKHRv
U3RyaW5nVGFnU3ltYm9sU2xvdC5pc1Vuc2V0KCkpIHsKKyAgICAgICAgcHJlcGFyZVByb3RvdHlw
ZUNoYWluRm9yQ2FjaGluZyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG93blN0cnVjdHVy
ZSwgbnVsbHB0cik7CiAgICAgICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0Zv
clByb3BlcnR5TWlzcyh2bSwgdGhpcywgZXhlYywgb3duU3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5h
bWVzLT50b1N0cmluZ1RhZ1N5bWJvbC5pbXBsKCkpOwotICAgIGVsc2UKKyAgICB9IGVsc2UKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKSB7CkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNTEwMjcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxOS0xMC0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBDYW5vbmljYWxpemUgaG93IHdlIHByZXBhcmUgdGhlIHByb3RvdHlwZSBjaGFpbiBmb3Ig
aW5saW5lIGNhY2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMjgyNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYxOTM5MTk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzOgorCiAyMDE5LTEwLTExICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgYnVpbGQud2Via2l0Lm9yZyBiYXNlZGlyCklu
ZGV4OiBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHJldmlzaW9uIDI1MDk0OCkKKysrIFRv
b2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHdvcmtpbmcgY29weSkKQEAgLTQ4OCw3
ICs0ODgsNyBAQCAkbnVtUGFzc2VzID0gMAogCiAjIFdlIGZvcmNlIGFsbCB0ZXN0cyB0byB1c2Ug
YSBzbWFsbGVyICgxLjVNKSBzdGFjayBzbyB0aGF0IHN0YWNrIG92ZXJmbG93IHRlc3RzIGNhbiBy
dW4gZmFzdGVyLgogQkFTRV9PUFRJT05TID0gWyItLXVzZUZUTEpJVD1mYWxzZSIsICItLXVzZUZ1
bmN0aW9uRG90QXJndW1lbnRzPXRydWUiLCAiLS12YWxpZGF0ZUV4Y2VwdGlvbkNoZWNrcz10cnVl
IiwgIi0tdXNlRG9sbGFyVk09dHJ1ZSIsICItLW1heFBlclRocmVhZFN0YWNrVXNhZ2U9MTU3Mjg2
NCJdCi1FQUdFUl9PUFRJT05TID0gWyItLXRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPTEwIiwg
Ii0tdGhyZXNob2xkRm9ySklUU29vbj0xMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJX
YXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcD0yMCIsICIt
LXRocmVzaG9sZEZvck9wdGltaXplU29vbj0yMCIsICItLXRocmVzaG9sZEZvckZUTE9wdGltaXpl
QWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6ZVNvb249MjAiLCAiLS10
aHJlc2hvbGRGb3JPTUdPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwgIi0tdGhyZXNob2xkRm9yT01H
T3B0aW1pemVTb29uPTIwIiwgIi0tbWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5ndGg9MTUw
MDAwIiwgIi0tdXNlRWFnZXJDb2RlQmxvY2tKZXR0aXNvblRpbWluZz10cnVlIl0KK0VBR0VSX09Q
VElPTlMgPSBbIi0tdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA9MTAiLCAiLS10aHJlc2hvbGRG
b3JKSVRTb29uPTEwIiwgIi0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcD0yMCIsICIt
LXRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwPTIwIiwgIi0tdGhyZXNob2xkRm9y
T3B0aW1pemVTb29uPTIwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRlcldhcm1VcD0y
MCIsICItLXRocmVzaG9sZEZvckZUTE9wdGltaXplU29vbj0yMCIsICItLXRocmVzaG9sZEZvck9N
R09wdGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPTUdPcHRpbWl6ZVNvb249
MjAiLCAiLS1tYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aD0xNTAwMDAiLCAiLS11c2VF
YWdlckNvZGVCbG9ja0pldHRpc29uVGltaW5nPXRydWUiLCAiLS1yZXBhdGNoQnVmZmVyaW5nQ291
bnRkb3duPTAiXQogIyBOT1RFOiBUZXN0cyByZWx5IG9uIHRoaXMgdXNpbmcgc2NyaWJibGVGcmVl
Q2VsbHMuCiBOT19DSklUX09QVElPTlMgPSBbIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSIsICIt
LXRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPTEwMCIsICItLXNjcmliYmxlRnJlZUNlbGxzPXRy
dWUiXQogQjNPMV9PUFRJT05TID0gWyItLWRlZmF1bHRCM09wdExldmVsPTEiXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380799</attachid>
            <date>2019-10-11 16:34:56 -0700</date>
            <delta_ts>2019-10-14 10:45:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>32384</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTA5NDgpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE5LTEwLTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIENhbm9uaWNhbGl6ZSBob3cgd2UgcHJlcGFyZSB0aGUgcHJvdG90eXBl
IGNoYWluIGZvciBpbmxpbmUgY2FjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjE5Mzkx
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0
cmVzcy9jYWNoZS1jb3JyZWN0LW9mZnNldC1hZnRlci1mbGF0dGVuaW5nLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGFzc2VydCk6CisKIDIwMTktMTAtMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsIG91dCByMjUwODc4CkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy9jYWNoZS1jb3JyZWN0LW9mZnNldC1hZnRlci1mbGF0dGVuaW5nLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2NhY2hlLWNvcnJlY3Qtb2Zmc2V0LWFmdGVyLWZs
YXR0ZW5pbmcuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvY2FjaGUtY29ycmVj
dC1vZmZzZXQtYWZ0ZXItZmxhdHRlbmluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0
IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yOworfQorCitsZXQgcCA9IHt9OworbGV0IG8gPSB7fTsKK28uX19wcm90b19fID0gcDsK
KworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICBwWyJwIiArIGldID0gaTsK
K30KK3AuZm9vID0gNDI7CitkZWxldGUgcC5wMDsKK2RlbGV0ZSBwLnAxOworZGVsZXRlIHAucDI7
CitkZWxldGUgcC5wMzsKK2RlbGV0ZSBwLnA0OworZGVsZXRlIHAucDU7CisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgMTA7ICsraSkgeworICAgIHAuZm9vID0gaTsKKyAgICBhc3NlcnQoby5mb28gPT09
IGkpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTA5NDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDcgQEAKKzIwMTktMTAtMTEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisK
KyAgICAgICAgQ2Fub25pY2FsaXplIGhvdyB3ZSBwcmVwYXJlIHRoZSBwcm90b3R5cGUgY2hhaW4g
Zm9yIGlubGluZSBjYWNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDI4MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MTkzOTE5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2Fub25pY2FsaXplcyBob3cgd2UgcHJlcGFyZSB0aGUgcHJvdG90eXBlIGNoYWluIGZvciBjYWNo
aW5nLiBCb3RoCisgICAgICAgIGluIHRoZSBwb2x5IHByb3RvIGNoYWluLCBhbmQgdGhlIGdlbmVy
YXRlQ29uZGl0aW9ucyosIHdlIHdlcmUgZmxhdHRlbmluZworICAgICAgICBkaWN0aW9uYXJpZXMg
YXMgd2Ugd2FsayB0aGUgcHJvdG90eXBlIGNoYWluLiBXZSBub3cgdW5pZnkgdGhhdCBpbnRvIG9u
ZQorICAgICAgICBmdW5jdGlvbiBjYWxsZWQgYHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hp
bmdgLiBJbiB0aGF0LCB3ZSBmbGF0dGVuCisgICAgICAgIGRpY3Rpb25hcmllcyBhcyB3ZSB0cmF2
ZXJzZSB0aGUgcHJvdG90eXBlIGNoYWluLCBhbmQgbm90ZSBpZiBhbnkgb2JqZWN0cworICAgICAg
ICBhcmUgcG9seSBwcm90by4KKyAgICAgICAgCisgICAgICAgIE15IHBhdGNoIGluIHIyNTA1NDAg
bWFkZSBpdCBzbyB3ZSBub3cgZmxhdHRlbiB1bmNhY2hlYWJsZSBkaWN0aW9uYXJpZXMgKHRoaXMK
KyAgICAgICAgd2FzIHRoZSBpbnRlbnRpb24gYWxsIGFsb25nLCBidXQgaXQgd2FzIGEgcGVyZiBi
dWcgdGhhdCB3ZSBkaWRuJ3QgZG8gdGhpcykuIFRoYXQKKyAgICAgICAgcmV2ZWFsZWQgdGhhdCB0
aGUgaW5saW5lIGNhY2hpbmcgY29kZSBjb3VsZCB1c2UgYSBzdGFsZSBQcm9wZXJ0eU9mZnNldCB3
aGVuCisgICAgICAgIGZsYXR0ZW5pbmcgYW4gdW5jYWNoZWFibGUgZGljdGlvbmFyeS4gVGhpcyBw
YXRjaCBtYWtlcyBpdCBzbyB3ZSB1bml2ZXJzYWxseQorICAgICAgICB0cnkganVzdCBkZWZlciBj
YWNoaW5nIHRvIGxhdGVyIGxhdGVyIGlmIHdlIGVuY291bnRlciBhIHNpdHVhdGlvbiB3aGVyZSB3
ZQorICAgICAgICBmbGF0dGVuIGEgZGljdGlvbmFyeSB0aGF0IGNvdWxkIGJlIGEgcHJvcGVydHkg
aG9sZGVyLgorCisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQu
Y3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm90b3R5cGVFcXVpdmFs
ZW5jZUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OmdlbmVyYXRlQ29uZGl0aW9uc0ZvclBy
b3BlcnR5TWlzc0NvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OmdlbmVyYXRlQ29uZGl0aW9u
c0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OnByZXBh
cmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgICogYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNz
Q2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKToK
KyAgICAgICAgKiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlND
OjpQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6c2xvdEJhc2VTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAg
ICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAg
ICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbkJ5
SUQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3RhbmNlT2YpOgorICAgICAgICAqIGxsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldHVwR2V0QnlJZFBy
b3RvdHlwZUNhY2hlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmpl
Y3RUb1N0cmluZ1ZhbHVlKToKKwogMjAxOS0xMC0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBUcnkgdG8gZml4IGJ1aWxkIGZvciBXaW5k
b3dzIENfTE9PUApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCShyZXZpc2lvbiAyNTA5
NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsMTQgKzI2Nyw5IEBAIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGdlbmVyYXRlQ29uZGl0aW8KICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1lbnVtIENvbmN1cnJlbmN5IHsKLSAgICBNYWluVGhyZWFkLAotICAgIENvbmN1cnJlbnQKLX07
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQg
Z2VuZXJhdGVDb25kaXRpb25zKAotICAgIFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IsCi0gICAgQ29uY3VycmVuY3kgY29uY3VycmVuY3kgPSBNYWluVGhyZWFk
KQorICAgIFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7
CiAgICAgVmVjdG9yPE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiBjb25kaXRpb25zOwogICAgIApA
QCAtMzE0LDIxICszMDksOSBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNv
bmRpCiAgICAgICAgIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBp
ZiAoY29uY3VycmVuY3kgPT0gTWFpblRocmVhZCkgewotICAgICAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkRpY3Rpb25hcnkgaGFzIGJlZW4gZmxhdHRlbmVkIGJl
Zm9yZSwgc28gaW52YWxpZC5cbiIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVy
Ym9zZSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRmxhdHRlbmluZyAiLCBwb2ludGVy
RHVtcChzdHJ1Y3R1cmUpKTsKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0
aW9uYXJ5U3RydWN0dXJlKHZtLCBvYmplY3QpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9z
ZSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2Fubm90IGZsYXR0ZW4gZGljdGlvbmFy
eSB3aGVuIG5vdCBvbiBtYWluIHRocmVhZCwgc28gaW52YWxpZC5cbiIpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJu
YWw6OnZlcmJvc2UpCisgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2Fubm90IGNhY2hlIGRpY3Rp
b25hcnkuXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dDo6aW52YWxpZCgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFmdW5jdG9yKGNvbmRpdGlv
bnMsIG9iamVjdCkpIHsKQEAgLTQ4Nyw3ICs0NzAsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCBnZW5lcmF0ZUNvbmRpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgY29uZGl0aW9ucy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9LCBDb25jdXJyZW50KTsKKyAgICAgICAgfSk7CiB9CiAKIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzc0NvbmN1cnJl
bnRseSgKQEAgLTUwMSw3ICs0ODQsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5l
cmF0ZUNvbmRpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29u
ZGl0aW9ucy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9LCBDb25jdXJyZW50KTsKKyAgICAgICAgfSk7CiB9CiAKIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRs
eSgKQEAgLTUxNiw3ICs0OTksNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0
ZUNvbmRpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29uZGl0
aW9ucy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
LCBDb25jdXJyZW50KTsKKyAgICAgICAgfSk7CiB9CiAKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGdlbmVyYXRlQ29uZGl0aW9uRm9yU2VsZkVxdWl2YWxlbmNlKApAQCAtNTI1LDUgKzUwOCw4MSBA
QCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvCiAgICAgcmV0dXJuIGdl
bmVyYXRlQ29uZGl0aW9uKHZtLCBvd25lciwgb2JqZWN0LCB1aWQsIFByb3BlcnR5Q29uZGl0aW9u
OjpFcXVpdmFsZW5jZSk7CiB9CiAKKy8vIEN1cnJlbnQgbWlnaHQgYmUgbnVsbC4gU3RydWN0dXJl
IGNhbid0IGJlIG51bGwuCitzdGF0aWMgT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3Rh
dHVzPiBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQ2VsbCogY3VycmVudCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0
KiB0YXJnZXQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgYm9v
bCBmb3VuZCA9IGZhbHNlOworICAgIGJvb2wgdXNlc1BvbHlQcm90byA9IGZhbHNlOworICAgIGJv
b2wgZmxhdHRlbmVkRGljdGlvbmFyeSA9IGZhbHNlOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgIGlmICgh
Y3VycmVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5
U3RydWN0dXJlKHZtLCBhc09iamVjdChjdXJyZW50KSk7CisgICAgICAgICAgICBmbGF0dGVuZWRE
aWN0aW9uYXJ5ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc3RydWN0dXJlLT5w
cm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudCA9
PSB0YXJnZXQpIHsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ugb25seSBoYXZlIHBvbHkgcHJvdG8gaWYgd2Ug
bmVlZCB0byBhY2Nlc3Mgb3VyIHByb3RvdHlwZSB2aWEKKyAgICAgICAgLy8gdGhlIHBvbHkgcHJv
dG8gcHJvdG9jb2wuIElmIHRoZSBzbG90IGJhc2UgaXMgdGhlIG9ubHkgcG9seSBwcm90bworICAg
ICAgICAvLyB0aGluZyBpbiB0aGUgY2hhaW4sIGFuZCB3ZSBoYXZlIGEgY2FjaGUgaGl0IG9uIGl0
LCB0aGVuIHdlJ3JlIG5vdAorICAgICAgICAvLyBwb2x5IHByb3RvLgorICAgICAgICBpZiAoc3Ry
dWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgeworICAgICAgICAgICAgaWYgKCFjdXJyZW50KQorICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICB1c2VzUG9seVBy
b3RvID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gc3Ry
dWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoZ2xvYmFsT2JqZWN0LCBjdXJyZW50KTsKKyAgICAg
ICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
dXJyZW50ID0gYXNPYmplY3QocHJvdG90eXBlKTsKKyAgICAgICAgc3RydWN0dXJlID0gY3VycmVu
dC0+c3RydWN0dXJlKHZtKTsKKyAgICB9CisKKyAgICBpZiAoIWZvdW5kICYmICEhdGFyZ2V0KQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgUHJvdG90eXBlQ2hhaW5DYWNoaW5n
U3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQudXNlc1BvbHlQcm90byA9IHVzZXNQb2x5UHJvdG87
CisgICAgcmVzdWx0LmZsYXR0ZW5lZERpY3Rpb25hcnkgPSBmbGF0dGVuZWREaWN0aW9uYXJ5Owor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5n
U3RhdHVzPiBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCkKK3sKKyAgICByZXR1
cm4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2UsIGJh
c2UtPnN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnZtKCkpLCB0YXJnZXQpOworfQorCitPcHRpb25h
bDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNh
Y2hpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNPYmplY3QqIHRhcmdldCA9IHNsb3QuaXNVbnNl
dCgpID8gbnVsbHB0ciA6IHNsb3Quc2xvdEJhc2UoKTsKKyAgICByZXR1cm4gcHJlcGFyZVByb3Rv
dHlwZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2UsIHRhcmdldCk7Cit9CisKK09w
dGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWlu
Rm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIGJhc2VT
dHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCit7CisgICAgcmV0dXJuIHByZXBhcmVQcm90b3R5
cGVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBiYXNlU3RydWN0dXJlLCB0
YXJnZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmgJKHJldmlzaW9uIDI1MDk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNCAr
MTg5LDEzIEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGkKIE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVy
TWlzc0NvbmN1cnJlbnRseSgKICAgICBWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBo
ZWFkU3RydWN0dXJlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAorc3RydWN0IFByb3RvdHlw
ZUNoYWluQ2FjaGluZ1N0YXR1cyB7CisgICAgYm9vbCB1c2VzUG9seVByb3RvOworICAgIGJvb2wg
ZmxhdHRlbmVkRGljdGlvbmFyeTsKK307CisKK09wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGlu
Z1N0YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90Jik7CitPcHRpb25hbDxQcm90b3R5cGVD
aGFpbkNhY2hpbmdTdGF0dXM+IHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpOworT3B0aW9uYWw8UHJv
dG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5n
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KTsKKwog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seVByb3RvQWNjZXNzQ2hhaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAJKHJldmlzaW9uIDI1MDk0OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDMzICszMSwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3ND
aGFpbjo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBib29sJiB1c2VzUG9seVByb3RvKQorc3RkOjp1bmlx
dWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBzbG90LmlzVW5zZXQoKSA/
IG51bGxwdHIgOiBzbG90LnNsb3RCYXNlKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmpl
Y3QsIGJhc2UsIHRhcmdldCwgdXNlc1BvbHlQcm90byk7CisgICAgcmV0dXJuIGNyZWF0ZShnbG9i
YWxPYmplY3QsIGJhc2UsIHRhcmdldCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQsIGJvb2wmIHVzZXNQ
b2x5UHJvdG8pCitzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IFBvbHlQcm90
b0FjY2Vzc0NoYWluOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KQogewogICAgIEpTQ2VsbCogY3VycmVudCA9IGJhc2U7
CiAgICAgVk0mIHZtID0gYmFzZS0+dm0oKTsKIAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKIAot
ICAgIHVzZXNQb2x5UHJvdG8gPSBmYWxzZTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4gcmVzdWx0KG5ldyBQb2x5UHJvdG9BY2Nlc3NDaGFpbigpKTsKIAogICAg
IGZvciAodW5zaWduZWQgaXRlcmF0aW9uTnVtYmVyID0gMDsgdHJ1ZTsgKytpdGVyYXRpb25OdW1i
ZXIpIHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjdXJyZW50LT5zdHJ1Y3R1cmUo
dm0pOwogCi0gICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKLSAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgICAgICAgICAgc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVj
dHVyZSh2bSwgYXNPYmplY3QoY3VycmVudCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICAgICAgaWYgKCFzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzcsMTIgKzcwLDYgQEAgc3RkOjp1bmlxdWVf
cHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQbwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICAvLyBXZSBvbmx5IGhhdmUgcG9seSBwcm90byBpZiB3ZSBuZWVkIHRvIGFj
Y2VzcyBvdXIgcHJvdG90eXBlIHZpYQotICAgICAgICAvLyB0aGUgcG9seSBwcm90byBwcm90b2Nv
bC4gSWYgdGhlIHNsb3QgYmFzZSBpcyB0aGUgb25seSBwb2x5IHByb3RvCi0gICAgICAgIC8vIHRo
aW5nIGluIHRoZSBjaGFpbiwgYW5kIHdlIGhhdmUgYSBjYWNoZSBoaXQgb24gaXQsIHRoZW4gd2Un
cmUgbm90Ci0gICAgICAgIC8vIHBvbHkgcHJvdG8uCi0gICAgICAgIHVzZXNQb2x5UHJvdG8gfD0g
c3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKTsKLQogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGdsb2JhbE9iamVjdCwgY3VycmVudCk7CiAg
ICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nl
c3NDaGFpbi5oCShyZXZpc2lvbiAyNTA5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIs
OCBAQCBwdWJsaWM6CiAgICAgUG9seVByb3RvQWNjZXNzQ2hhaW4oUG9seVByb3RvQWNjZXNzQ2hh
aW4mKSA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZXR1cm5zIG51bGxwdHIgd2hlbiBpbnZhbGlkLgot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNyZWF0ZShK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90JiwgYm9vbCYg
dXNlc1BvbHlQcm90byk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4gY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBiYXNlLCBKU09iamVjdCog
dGFyZ2V0LCBib29sJiB1c2VzUG9seVByb3RvKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJh
c2UsIGNvbnN0IFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwg
SlNPYmplY3QqIHRhcmdldCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IGNsb25lKCkKICAgICB7CkBAIC03Myw2ICs3MywxMyBAQCBwdWJsaWM6CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBTdHJ1Y3R1cmUqIHNsb3RCYXNlU3RydWN0dXJlKFN0cnVjdHVyZSog
YmFzZVN0cnVjdHVyZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2NoYWluLnNpemUoKSkK
KyAgICAgICAgICAgIHJldHVybiBtX2NoYWluLmxhc3QoKTsKKyAgICAgICAgcmV0dXJuIGJhc2VT
dHJ1Y3R1cmU7CisgICAgfQorCiBwcml2YXRlOgogICAgIFBvbHlQcm90b0FjY2Vzc0NoYWluKCkg
PSBkZWZhdWx0OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJl
dmlzaW9uIDI1MDk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVHZXRCeUlECiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhh
c0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0
aW9uYXJ5U3RydWN0dXJlKHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlQ2VsbCkpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOyAvLyBXZSBtYXkgaGF2ZSBjaGFu
Z2VkIHByb3BlcnR5IG9mZnNldHMuCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg
ICAgaWYgKHNsb3QuaXNVbnNldCgpICYmIHN0cnVjdHVyZS0+dHlwZUluZm8oKS5nZXRPd25Qcm9w
ZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSgpKQpAQCAtMjk4LDE0ICsyOTksMjEg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogICAgICAgICAgICAg
ICAgIC8vIElmIGEga2luZCBpcyBHZXRCeUlES2luZDo6RGlyZWN0LCB3ZSBkbyBub3QgbmVlZCB0
byBpbnZlc3RpZ2F0ZSBwcm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCiAgICAgICAgICAgICAgICAg
Ly8gQ2FjaGVhYmlsaXR5IGp1c3QgZGVwZW5kcyBvbiB0aGUgaGVhZCBzdHJ1Y3R1cmUuCiAgICAg
ICAgICAgICAgICAgaWYgKGtpbmQgIT0gR2V0QnlJREtpbmQ6OkRpcmVjdCkgewotICAgICAgICAg
ICAgICAgICAgICBib29sIHVzZXNQb2x5UHJvdG87Ci0gICAgICAgICAgICAgICAgICAgIHByb3Rv
dHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIGJhc2VDZWxsLCBzbG90LCB1c2VzUG9seVByb3RvKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9w
ZXJ0eS4KKyAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVQcm90
b3R5cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2Vs
bCwgc2xvdCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICAgICAgICAg
ICAgICBpZiAoY2FjaGVTdGF0dXMtPmZsYXR0ZW5lZERpY3Rpb25hcnkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFByb3BlcnR5IG9mZnNldHMgbWF5IGhhdmUgY2hhbmdlZCBkdWUgdG8g
ZmxhdHRlbmluZy4gV2UnbGwgY2FjaGUgbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCF1c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICAgICAg
cHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3QpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBwcm90b3R5cGVBY2Nlc3ND
aGFpbi0+c2xvdEJhc2VTdHJ1Y3R1cmUoc3RydWN0dXJlKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUp
ID09IG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBXZSB1c2UgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgaW5zdGVhZCBm
b3IgZmFzdGVyIGFjY2Vzc2VzLgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNj
ZXNzQ2hhaW4gPSBudWxscHRyOwogCkBAIC0zMTgsNiArMzI2LDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1
Y3R1cmUsIHNsb3Quc2xvdEJhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lLmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkgfHwgY29uZGl0aW9uU2V0LnNsb3RCYXNl
Q29uZGl0aW9uKCkub2Zmc2V0KCkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2Vu
ZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXRDdXN0b20oCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwgc2xv
dC5zbG90QmFzZSgpLApAQCAtMzI4LDggKzMzNyw2IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUdldEJ5SUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIG9mZnNldCA9IHNsb3QuaXNVbnNldCgpID8gaW52YWxpZE9mZnNldCA6
IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEpTRnVu
Y3Rpb24qIGdldHRlciA9IG51bGxwdHI7CkBAIC00OTYsMTIgKzUwMywxMSBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlECiAgICAgICAgICAgICAgICAgICAgIGlmIChz
dHJ1Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUt
PmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlVmFs
dWUpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0g
ICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQotICAgICAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVD
b25jdXJyZW50bHkoCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUsIGlkZW50Lmlt
cGwoKSwgMCwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUNv
bmN1cnJlbnRseShzdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSwgMCwgb2Zmc2V0KTsKICAgICAgICAg
ICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSB8fCAhbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vz
c2VzQXJlQ2FjaGVhYmxlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwogCkBAIC01MTIsMjIgKzUxOCwyMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVQdXRCeUlECiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0Fj
Y2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKICAgICAgICAgICAgICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CiAgICAgICAgICAgICAgICAgaWYgKHB1
dEtpbmQgPT0gTm90RGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlc1BvbHlQ
cm90bzsKLSAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNl
bGwsIG51bGxwdHIsIHVzZXNQb2x5UHJvdG8pOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXBy
b3RvdHlwZUFjY2Vzc0NoYWluKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIGlu
dmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90eXBlIHByb3BlcnR5LgorICAgICAgICAgICAgICAg
ICAgICBhdXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2VDZWxsLCBudWxscHRyKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjYWNoZVN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCF1c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChj
YWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJv
dG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIG51bGxwdHIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVsbHB0
cjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlTZXR0ZXJNaXNzKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBuZXdT
dHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRp
b25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eVNldHRlck1pc3MoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZXhlYywgbmV3U3RydWN0dXJlLCBp
ZGVudC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQu
aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwogICAgICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIG9m
ZnNldCwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90
b3R5cGVBY2Nlc3NDaGFpbikpOwpAQCAtNTM4LDE4ICs1NDMsMTggQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRAogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAKICAgICAgICAg
ICAgICAgICBpZiAoc2xvdC5iYXNlKCkgIT0gYmFzZVZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGJvb2wgdXNlc1BvbHlQcm90bzsKLSAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNj
ZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3QuYmFzZSgpLCB1c2VzUG9seVByb3RvKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9w
ZXJ0eS4KKyAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVQcm90
b3R5cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2Vs
bCwgc2xvdC5iYXNlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXNQb2x5UHJvdG8pIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RhdHVzLT51c2VzUG9seVByb3RvKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0Fj
Y2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwg
c2xvdC5iYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nl
c3NDaGFpbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbmRpdGlvblNldCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVDb25k
aXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXRDdXN0b20oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5iYXNlKCks
IGlkZW50LmltcGwoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpO
b25lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNv
bmRpdGlvbnNGb3JQcm90b3R5cGVQcm9wZXJ0eUhpdEN1c3RvbSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1Y3R1cmUsIHNsb3QuYmFzZSgpLCBp
ZGVudC5pbXBsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9u
ZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgp
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAg
ICAgICAgICAgICAgICAgICB9CkBAIC01NjQsMTggKzU2OSwyMSBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlECiAgICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKIAogICAgICAgICAgICAgICAgIGlmIChzbG90
LmJhc2UoKSAhPSBiYXNlVmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VzUG9s
eVByb3RvOwotICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQ
cm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNl
Q2VsbCwgc2xvdC5iYXNlKCksIHVzZXNQb2x5UHJvdG8pOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJ
dCdzIGludmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90eXBlIHByb3BlcnR5LgorICAgICAgICAg
ICAgICAgICAgICBhdXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2Fj
aGluZyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2VDZWxsLCBzbG90LmJhc2UoKSk7
CisgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0dXMtPmZsYXR0ZW5lZERpY3Rpb25hcnkpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogCi0gICAgICAg
ICAgICAgICAgICAgIGlmICghdXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoY2FjaGVTdGF0dXMtPnVzZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2VDZWxsLCBzbG90LmJhc2UoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAg
ICAgICAgb2Zmc2V0ID0gcHJvdG90eXBlQWNjZXNzQ2hhaW4tPnNsb3RCYXNlU3RydWN0dXJlKGJh
c2VDZWxsLT5zdHJ1Y3R1cmUodm0pKS0+Z2V0KHZtLCBpZGVudC5pbXBsKCkpOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNj
ZXNzQ2hhaW4gPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0
ID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm90
b3R5cGVQcm9wZXJ0eUhpdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0sIGNv
ZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBzbG90LmJhc2UoKSwgaWRlbnQuaW1wbCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0Zv
clByb3RvdHlwZVByb3BlcnR5SGl0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLCBj
b2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5iYXNlKCksIGlkZW50LmltcGwoKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKQEAgLTU4NCw3
ICs1OTIsNiBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlECiAKICAg
ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IGNvbmRpdGlvblNldC5zbG90QmFzZUNvbmRp
dGlvbigpLm9mZnNldCgpOwogICAgICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6
Y3JlYXRlKApAQCAtNjY3LDM0ICs2NzQsNDMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlSW5CeUlEKAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2xvdC5zbG90
QmFzZSgpICE9IGJhc2UpIHsKLSAgICAgICAgICAgICAgICBib29sIHVzZXNQb2x5UHJvdG87Ci0g
ICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFp
bjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgc2xvdCwgdXNlc1Bv
bHlQcm90byk7Ci0gICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewot
ICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIGludmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90
eXBlIHByb3BlcnR5LgorICAgICAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJl
UHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFz
ZSwgc2xvdCk7CisgICAgICAgICAgICAgICAgaWYgKCFjYWNoZVN0YXR1cykKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGlmICghdXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgIGlmIChjYWNo
ZVN0YXR1cy0+ZmxhdHRlbmVkRGljdGlvbmFyeSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFJldHJ5Q2FjaGVMYXRlcjsKKworICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNl
c1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9
IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBiYXNlLCBzbG90KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3ND
aGFpbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkg
fHwgcHJvdG90eXBlQWNjZXNzQ2hhaW4tPnNsb3RCYXNlU3RydWN0dXJlKHN0cnVjdHVyZSktPmdl
dCh2bSwgaWRlbnQuaW1wbCgpKSA9PSBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9
IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29u
ZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KAogICAgICAgICAgICAgICAgICAgICAgICAg
dm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBzbG90LnNsb3RCYXNlKCksIGlkZW50Lmlt
cGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgY29u
ZGl0aW9uU2V0LnNsb3RCYXNlQ29uZGl0aW9uKCkub2Zmc2V0KCkgPT0gc2xvdC5jYWNoZWRPZmZz
ZXQoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgYm9vbCB1c2VzUG9seVByb3RvOwotICAgICAgICAgICAgcHJvdG90eXBl
QWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgYmFzZSwgc2xvdCwgdXNlc1BvbHlQcm90byk7Ci0gICAgICAgICAgICBp
ZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7Ci0gICAgICAgICAgICAgICAgLy8gSXQncyBpbnZh
bGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAgICAgIGF1dG8g
Y2FjaGVTdGF0dXMgPSBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoIWNhY2hl
U3RhdHVzKQogICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAoIXVzZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgIGlm
IChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgIHByb3RvdHlw
ZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGJhc2UsIHNsb3QpOworICAgICAgICAgICAgICAgIGlmICghcHJvdG90
eXBlQWNjZXNzQ2hhaW4pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hl
OworICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3ND
aGFpbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVD
b25kaXRpb25zRm9yUHJvcGVydHlNaXNzKAogICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJs
b2NrLCBleGVjLCBzdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CisgICAgICAgICAgICAgICAgaWYg
KCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoIWNvbmRp
dGlvblNldC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAog
ICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFz
c0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAKQEAgLTc1NCw3ICs3
NzAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jCiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKHN0cnVjdHVyZS0+cHJvdG90eXBlUXVlcmllc0FyZUNhY2hlYWJsZSgp
KSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRlYWNoIHRoaXMgdG8gZG8gcG9seSBwcm90
by4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg1NjYzCi0KKyAgICAgICAgICAgICAgICBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JD
YWNoaW5nKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdmFsdWUsIHdhc0ZvdW5kID8gcHJv
dG90eXBlIDogbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9ySW5zdGFuY2VPZigKICAg
ICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBwcm90b3R5
cGUsIHdhc0ZvdW5kKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNTA5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDksNiAr
NzA5LDggQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoRQogICAgICAg
ICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBqc0Nhc3Q8SlNPYmpl
Y3QqPihiYXNlQ2VsbCkpOwogICAgIH0KIAorICAgIHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNh
Y2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwgc2xvdCk7CisKICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25zOwogICAgIGlmIChzbG90Lmlz
VW5zZXQoKSkKICAgICAgICAgY29uZGl0aW9ucyA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3Bl
cnR5TWlzcyh2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlz
aW9uIDI1MDk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMzEsNyArMTEzMSw3IEBAIHZvaWQgU3RydWN0dXJlOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGMKICAgICAKICAgICBjb25zdF9jYXN0PFN0cnVjdHVyZSo+
KHRoaXMpLT5mb3JFYWNoUHJvcGVydHlDb25jdXJyZW50bHkoCiAgICAgICAgIFsmXSAoY29uc3Qg
UHJvcGVydHlNYXBFbnRyeSYgZW50cnkpIC0+IGJvb2wgewotICAgICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCBlbnRyeS5rZXksICI6Iiwgc3RhdGljX2Nhc3Q8aW50PihlbnRyeS5vZmZzZXQpKTsK
KyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZW50cnkua2V5LCAiOiIsIHN0YXRpY19jYXN0
PGludD4oZW50cnkub2Zmc2V0KSwgInwiLCAiZ2V0dGVyPSIsIGVudHJ5LmF0dHJpYnV0ZXMgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0pOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlUmFyZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAkocmV2aXNpb24gMjUwOTQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDcsMTEgKzEwNywxMyBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmpl
Y3RUb1N0cmluCiAKICAgICAgICAgLy8gVGhpcyB3aWxsIG5vdCBjcmVhdGUgYSBjb25kaXRpb24g
Zm9yIHRoZSBjdXJyZW50IHN0cnVjdHVyZSBidXQgdGhhdCBpcyBnb29kIGJlY2F1c2Ugd2Uga25v
dyB0aGUgU3ltYm9sLnRvU3RyaW5nVGFnCiAgICAgICAgIC8vIGlzIG5vdCBvbiB0aGUgb3duU3Ry
dWN0dXJlIHNvIHdlIHdpbGwgdHJhbnNpc2l0aW9uIGlmIG9uZSBpcyBhZGRlZCBhbmQgdGhpcyBj
YWNoZSB3aWxsIG5vIGxvbmdlciBiZSB1c2VkLgorICAgICAgICBwcmVwYXJlUHJvdG90eXBlQ2hh
aW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgb3duU3RydWN0dXJlLCB0
b1N0cmluZ1RhZ1N5bWJvbFNsb3Quc2xvdEJhc2UoKSk7CiAgICAgICAgIGNvbmRpdGlvblNldCA9
IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KHZtLCB0aGlzLCBleGVj
LCBvd25TdHJ1Y3R1cmUsIHRvU3RyaW5nVGFnU3ltYm9sU2xvdC5zbG90QmFzZSgpLCB2bS5wcm9w
ZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbC5pbXBsKCkpOwogICAgICAgICBBU1NFUlQoIWNv
bmRpdGlvblNldC5pc1ZhbGlkKCkgfHwgY29uZGl0aW9uU2V0Lmhhc09uZVNsb3RCYXNlQ29uZGl0
aW9uKCkpOwotICAgIH0gZWxzZSBpZiAodG9TdHJpbmdUYWdTeW1ib2xTbG90LmlzVW5zZXQoKSkK
KyAgICB9IGVsc2UgaWYgKHRvU3RyaW5nVGFnU3ltYm9sU2xvdC5pc1Vuc2V0KCkpIHsKKyAgICAg
ICAgcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIG93blN0cnVjdHVyZSwgbnVsbHB0cik7CiAgICAgICAgIGNvbmRpdGlvblNldCA9IGdl
bmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgdGhpcywgZXhlYywgb3duU3RydWN0
dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbC5pbXBsKCkpOwotICAgIGVs
c2UKKyAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFjb25kaXRpb25TZXQu
aXNWYWxpZCgpKSB7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNTEwMjcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMC0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KKworICAgICAgICBDYW5vbmljYWxpemUgaG93IHdlIHByZXBhcmUgdGhlIHBy
b3RvdHlwZSBjaGFpbiBmb3IgaW5saW5lIGNhY2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjgyNworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTYxOTM5MTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorCiAyMDE5LTEwLTExICBBYWthc2gg
SmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgYnVpbGQud2Vi
a2l0Lm9yZyBiYXNlZGlyCkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3Rz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHJldmlz
aW9uIDI1MDk0OCkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHdvcmtp
bmcgY29weSkKQEAgLTQ4OCw3ICs0ODgsNyBAQCAkbnVtUGFzc2VzID0gMAogCiAjIFdlIGZvcmNl
IGFsbCB0ZXN0cyB0byB1c2UgYSBzbWFsbGVyICgxLjVNKSBzdGFjayBzbyB0aGF0IHN0YWNrIG92
ZXJmbG93IHRlc3RzIGNhbiBydW4gZmFzdGVyLgogQkFTRV9PUFRJT05TID0gWyItLXVzZUZUTEpJ
VD1mYWxzZSIsICItLXVzZUZ1bmN0aW9uRG90QXJndW1lbnRzPXRydWUiLCAiLS12YWxpZGF0ZUV4
Y2VwdGlvbkNoZWNrcz10cnVlIiwgIi0tdXNlRG9sbGFyVk09dHJ1ZSIsICItLW1heFBlclRocmVh
ZFN0YWNrVXNhZ2U9MTU3Mjg2NCJdCi1FQUdFUl9PUFRJT05TID0gWyItLXRocmVzaG9sZEZvckpJ
VEFmdGVyV2FybVVwPTEwIiwgIi0tdGhyZXNob2xkRm9ySklUU29vbj0xMCIsICItLXRocmVzaG9s
ZEZvck9wdGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVy
TG9uZ1dhcm1VcD0yMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplU29vbj0yMCIsICItLXRocmVz
aG9sZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRp
bWl6ZVNvb249MjAiLCAiLS10aHJlc2hvbGRGb3JPTUdPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwg
Ii0tdGhyZXNob2xkRm9yT01HT3B0aW1pemVTb29uPTIwIiwgIi0tbWF4aW11bUV2YWxDYWNoZWFi
bGVTb3VyY2VMZW5ndGg9MTUwMDAwIiwgIi0tdXNlRWFnZXJDb2RlQmxvY2tKZXR0aXNvblRpbWlu
Zz10cnVlIl0KK0VBR0VSX09QVElPTlMgPSBbIi0tdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA9
MTAiLCAiLS10aHJlc2hvbGRGb3JKSVRTb29uPTEwIiwgIi0tdGhyZXNob2xkRm9yT3B0aW1pemVB
ZnRlcldhcm1VcD0yMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwPTIw
IiwgIi0tdGhyZXNob2xkRm9yT3B0aW1pemVTb29uPTIwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0
aW1pemVBZnRlcldhcm1VcD0yMCIsICItLXRocmVzaG9sZEZvckZUTE9wdGltaXplU29vbj0yMCIs
ICItLXRocmVzaG9sZEZvck9NR09wdGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRG
b3JPTUdPcHRpbWl6ZVNvb249MjAiLCAiLS1tYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0
aD0xNTAwMDAiLCAiLS11c2VFYWdlckNvZGVCbG9ja0pldHRpc29uVGltaW5nPXRydWUiLCAiLS1y
ZXBhdGNoQnVmZmVyaW5nQ291bnRkb3duPTAiXQogIyBOT1RFOiBUZXN0cyByZWx5IG9uIHRoaXMg
dXNpbmcgc2NyaWJibGVGcmVlQ2VsbHMuCiBOT19DSklUX09QVElPTlMgPSBbIi0tdXNlQ29uY3Vy
cmVudEpJVD1mYWxzZSIsICItLXRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPTEwMCIsICItLXNj
cmliYmxlRnJlZUNlbGxzPXRydWUiXQogQjNPMV9PUFRJT05TID0gWyItLWRlZmF1bHRCM09wdExl
dmVsPTEiXQo=
</data>
<flag name="review"
          id="396556"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380894</attachid>
            <date>2019-10-14 10:45:19 -0700</date>
            <delta_ts>2019-10-14 11:30:34 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>31768</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTA5NDgpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE5LTEwLTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIENhbm9uaWNhbGl6ZSBob3cgd2UgcHJlcGFyZSB0aGUgcHJvdG90eXBl
IGNoYWluIGZvciBpbmxpbmUgY2FjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjE5Mzkx
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgICogc3Ry
ZXNzL2NhY2hlLWNvcnJlY3Qtb2Zmc2V0LWFmdGVyLWZsYXR0ZW5pbmcuanM6IEFkZGVkLgorICAg
ICAgICAoYXNzZXJ0KToKKwogMjAxOS0xMC0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGwgb3V0IHIyNTA4NzgKSW5kZXg6IEpT
VGVzdHMvc3RyZXNzL2NhY2hlLWNvcnJlY3Qtb2Zmc2V0LWFmdGVyLWZsYXR0ZW5pbmcuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvY2FjaGUtY29ycmVjdC1vZmZzZXQtYWZ0ZXItZmxh
dHRlbmluZy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9jYWNoZS1jb3JyZWN0
LW9mZnNldC1hZnRlci1mbGF0dGVuaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQg
QEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3I7Cit9CisKK2xldCBwID0ge307CitsZXQgbyA9IHt9Oworby5fX3Byb3RvX18gPSBwOwor
Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIHBbInAiICsgaV0gPSBpOwor
fQorcC5mb28gPSA0MjsKK2RlbGV0ZSBwLnAwOworZGVsZXRlIHAucDE7CitkZWxldGUgcC5wMjsK
K2RlbGV0ZSBwLnAzOworZGVsZXRlIHAucDQ7CitkZWxldGUgcC5wNTsKKworZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDsgKytpKSB7CisgICAgcC5mb28gPSBpOworICAgIGFzc2VydChvLmZvbyA9PT0g
aSk7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDk0OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw0NSBAQAorMjAxOS0xMC0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBDYW5vbmljYWxpemUgaG93IHdlIHByZXBhcmUgdGhlIHByb3RvdHlwZSBjaGFpbiBm
b3IgaW5saW5lIGNhY2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjgyNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYxOTM5MTk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBUaGlzIHBhdGNoIGNh
bm9uaWNhbGl6ZXMgaG93IHdlIHByZXBhcmUgdGhlIHByb3RvdHlwZSBjaGFpbiBmb3IgY2FjaGlu
Zy4gQm90aAorICAgICAgICBpbiB0aGUgcG9seSBwcm90byBjaGFpbiwgYW5kIHRoZSBnZW5lcmF0
ZUNvbmRpdGlvbnMqLCB3ZSB3ZXJlIGZsYXR0ZW5pbmcKKyAgICAgICAgZGljdGlvbmFyaWVzIGFz
IHdlIHdhbGsgdGhlIHByb3RvdHlwZSBjaGFpbi4gV2Ugbm93IHVuaWZ5IHRoYXQgaW50byBvbmUK
KyAgICAgICAgZnVuY3Rpb24gY2FsbGVkIGBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5n
YC4gSW4gdGhhdCwgd2UgZmxhdHRlbgorICAgICAgICBkaWN0aW9uYXJpZXMgYXMgd2UgdHJhdmVy
c2UgdGhlIHByb3RvdHlwZSBjaGFpbiwgYW5kIG5vdGUgaWYgYW55IG9iamVjdHMKKyAgICAgICAg
YXJlIHBvbHkgcHJvdG8uCisgICAgICAgIAorICAgICAgICBNeSBwYXRjaCBpbiByMjUwNTQwIG1h
ZGUgaXQgc28gd2Ugbm93IGZsYXR0ZW4gdW5jYWNoZWFibGUgZGljdGlvbmFyaWVzICh0aGlzCisg
ICAgICAgIHdhcyB0aGUgaW50ZW50aW9uIGFsbCBhbG9uZywgYnV0IGl0IHdhcyBhIHBlcmYgYnVn
IHRoYXQgd2UgZGlkbid0IGRvIHRoaXMpLiBUaGF0CisgICAgICAgIHJldmVhbGVkIHRoYXQgdGhl
IGlubGluZSBjYWNoaW5nIGNvZGUgY291bGQgdXNlIGEgc3RhbGUgUHJvcGVydHlPZmZzZXQgd2hl
bgorICAgICAgICBmbGF0dGVuaW5nIGFuIHVuY2FjaGVhYmxlIGRpY3Rpb25hcnkuIFRoaXMgcGF0
Y2ggbWFrZXMgaXQgc28gd2UgdW5pdmVyc2FsbHkKKyAgICAgICAgdHJ5IGp1c3QgZGVmZXIgY2Fj
aGluZyB0byBsYXRlciBpZiB3ZSBlbmNvdW50ZXIgYSBzaXR1YXRpb24gd2hlcmUgd2UgZmxhdHRl
bgorICAgICAgICBhIGRpY3Rpb25hcnkgdGhhdCBjb3VsZCBiZSBhIHByb3BlcnR5IGhvbGRlci4K
KworICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcDoKKyAg
ICAgICAgKEpTQzo6Z2VuZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlRXF1aXZhbGVuY2VDb25j
dXJyZW50bHkpOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1p
c3NDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9w
ZXJ0eVNldHRlck1pc3NDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpwcmVwYXJlUHJvdG90
eXBlQ2hhaW5Gb3JDYWNoaW5nKToKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmNw
cDoKKyAgICAgICAgKEpTQzo6UG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaDoKKyAgICAgICAgKEpTQzo6UG9seVBy
b3RvQWNjZXNzQ2hhaW46OnNsb3RCYXNlU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBqaXQv
UmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChK
U0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeUlEKToKKyAg
ICAgICAgKEpTQzo6dHJ5Q2FjaGVJbnN0YW5jZU9mKToKKyAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVD
YWNoZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKwogMjAx
OS0xMC0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiBUcnkgdG8gZml4IGJ1aWxkIGZvciBXaW5kb3dzIENfTE9PUApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQuY3BwCShyZXZpc2lvbiAyNTA5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjcsMTQgKzI2Nyw5IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGdlbmVyYXRl
Q29uZGl0aW8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1lbnVtIENvbmN1cnJlbmN5IHsKLSAg
ICBNYWluVGhyZWFkLAotICAgIENvbmN1cnJlbnQKLX07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgogT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25zKAotICAg
IFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IsCi0gICAgQ29u
Y3VycmVuY3kgY29uY3VycmVuY3kgPSBNYWluVGhyZWFkKQorICAgIFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90
b3R5cGUsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgVmVjdG9yPE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uPiBjb25kaXRpb25zOwogICAgIApAQCAtMzE0LDIxICszMDksOSBAQCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpCiAgICAgICAgIHN0cnVjdHVyZSA9
IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzdHJ1Y3R1cmUt
PmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBpZiAoY29uY3VycmVuY3kgPT0gTWFpblRo
cmVhZCkgewotICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRC
ZWZvcmUoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IkRpY3Rpb25hcnkgaGFzIGJlZW4gZmxhdHRlbmVkIGJlZm9yZSwgc28gaW52YWxpZC5cbiIpOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Omlu
dmFsaWQoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiRmxhdHRlbmluZyAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUpKTsKLSAgICAg
ICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBvYmpl
Y3QpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiQ2Fubm90IGZsYXR0ZW4gZGljdGlvbmFyeSB3aGVuIG5vdCBvbiBtYWluIHRocmVh
ZCwgc28gaW52YWxpZC5cbiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgICAg
ICAgICAgZGF0YUxvZygiQ2Fubm90IGNhY2hlIGRpY3Rpb25hcnkuXG4iKTsKKyAgICAgICAgICAg
IHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFmdW5jdG9yKGNvbmRpdGlvbnMsIG9iamVjdCkpIHsKQEAgLTQ4Nyw3
ICs0NzAsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29uZGl0aW9ucy5hcHBlbmQo
cmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LCBDb25jdXJyZW50
KTsKKyAgICAgICAgfSk7CiB9CiAKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRl
Q29uZGl0aW9uc0ZvclByb3BlcnR5TWlzc0NvbmN1cnJlbnRseSgKQEAgLTUwMSw3ICs0ODQsNyBA
QCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29uZGl0aW9ucy5hcHBlbmQocmVzdWx0KTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LCBDb25jdXJyZW50KTsKKyAgICAg
ICAgfSk7CiB9CiAKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9u
c0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRseSgKQEAgLTUxNiw3ICs0OTksNyBAQCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29uZGl0aW9ucy5hcHBlbmQocmVzdWx0KTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LCBDb25jdXJyZW50KTsKKyAgICAgICAg
fSk7CiB9CiAKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGdlbmVyYXRlQ29uZGl0aW9uRm9yU2Vs
ZkVxdWl2YWxlbmNlKApAQCAtNTI1LDUgKzUwOCw4NCBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biBnZW5lcmF0ZUNvbmRpdGlvCiAgICAgcmV0dXJuIGdlbmVyYXRlQ29uZGl0aW9uKHZtLCBvd25l
ciwgb2JqZWN0LCB1aWQsIFByb3BlcnR5Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSk7CiB9CiAKKy8v
IEN1cnJlbnQgbWlnaHQgYmUgbnVsbC4gU3RydWN0dXJlIGNhbid0IGJlIG51bGwuCitzdGF0aWMg
T3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlUHJvdG90eXBlQ2hh
aW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVu
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCit7CisgICAgQVNTRVJU
KHN0cnVjdHVyZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgYm9v
bCBmb3VuZCA9IGZhbHNlOworICAgIGJvb2wgdXNlc1BvbHlQcm90byA9IGZhbHNlOworICAgIGJv
b2wgZmxhdHRlbmVkRGljdGlvbmFyeSA9IGZhbHNlOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgIGlmICgh
Y3VycmVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5
U3RydWN0dXJlKHZtLCBhc09iamVjdChjdXJyZW50KSk7CisgICAgICAgICAgICBmbGF0dGVuZWRE
aWN0aW9uYXJ5ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc3RydWN0dXJlLT5w
cm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudCA9
PSB0YXJnZXQpIHsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ugb25seSBoYXZlIHBvbHkgcHJvdG8gaWYgd2Ug
bmVlZCB0byBhY2Nlc3Mgb3VyIHByb3RvdHlwZSB2aWEKKyAgICAgICAgLy8gdGhlIHBvbHkgcHJv
dG8gcHJvdG9jb2wuIElmIHRoZSBzbG90IGJhc2UgaXMgdGhlIG9ubHkgcG9seSBwcm90bworICAg
ICAgICAvLyB0aGluZyBpbiB0aGUgY2hhaW4sIGFuZCB3ZSBoYXZlIGEgY2FjaGUgaGl0IG9uIGl0
LCB0aGVuIHdlJ3JlIG5vdAorICAgICAgICAvLyBwb2x5IHByb3RvLgorICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZTsKKyAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsKKyAg
ICAgICAgICAgIGlmICghY3VycmVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgdXNlc1BvbHlQcm90byA9IHRydWU7CisgICAgICAgICAgICBwcm90
b3R5cGUgPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChnbG9iYWxPYmplY3QsIGN1cnJl
bnQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+
cHJvdG90eXBlRm9yTG9va3VwKGdsb2JhbE9iamVjdCk7CisKKyAgICAgICAgaWYgKHByb3RvdHlw
ZS5pc051bGwoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjdXJyZW50ID0gYXNPYmpl
Y3QocHJvdG90eXBlKTsKKyAgICAgICAgc3RydWN0dXJlID0gY3VycmVudC0+c3RydWN0dXJlKHZt
KTsKKyAgICB9CisKKyAgICBpZiAoIWZvdW5kICYmICEhdGFyZ2V0KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgUHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzIHJlc3VsdDsK
KyAgICByZXN1bHQudXNlc1BvbHlQcm90byA9IHVzZXNQb2x5UHJvdG87CisgICAgcmVzdWx0LmZs
YXR0ZW5lZERpY3Rpb25hcnkgPSBmbGF0dGVuZWREaWN0aW9uYXJ5OworCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJl
UHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCkKK3sKKyAgICByZXR1cm4gcHJlcGFyZVByb3Rv
dHlwZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2UsIGJhc2UtPnN0cnVjdHVyZShn
bG9iYWxPYmplY3QtPnZtKCkpLCB0YXJnZXQpOworfQorCitPcHRpb25hbDxQcm90b3R5cGVDaGFp
bkNhY2hpbmdTdGF0dXM+IHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgSlNPYmplY3QqIHRhcmdldCA9IHNsb3QuaXNVbnNldCgpID8gbnVsbHB0ciA6
IHNsb3Quc2xvdEJhc2UoKTsKKyAgICByZXR1cm4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2Fj
aGluZyhnbG9iYWxPYmplY3QsIGJhc2UsIHRhcmdldCk7Cit9CisKK09wdGlvbmFsPFByb3RvdHlw
ZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUsIEpTT2Jq
ZWN0KiB0YXJnZXQpCit7CisgICAgcmV0dXJuIHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hp
bmcoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBiYXNlU3RydWN0dXJlLCB0YXJnZXQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgJKHJldmlzaW9u
IDI1MDk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNCArMTg5LDEzIEBAIE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGkKIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRs
eSgKICAgICBWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBoZWFkU3RydWN0dXJlLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAorc3RydWN0IFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0
YXR1cyB7CisgICAgYm9vbCB1c2VzUG9seVByb3RvOworICAgIGJvb2wgZmxhdHRlbmVkRGljdGlv
bmFyeTsKK307CisKK09wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFy
ZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwg
Y29uc3QgUHJvcGVydHlTbG90Jik7CitPcHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0
dXM+IHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpOworT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNo
aW5nU3RhdHVzPiBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KTsKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNz
Q2hhaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAJKHJldmlzaW9uIDI1MDk0OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDMzICszMSwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RkOjp1bmlxdWVf
cHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBib29sJiB1c2VzUG9seVByb3RvKQorc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBzbG90LmlzVW5zZXQoKSA/IG51bGxwdHIgOiBzbG90
LnNsb3RCYXNlKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2UsIHRhcmdl
dCwgdXNlc1BvbHlQcm90byk7CisgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2Us
IHRhcmdldCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9s
eVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQsIGJvb2wmIHVzZXNQb2x5UHJvdG8pCitzdGQ6
OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpj
cmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBKU09iamVj
dCogdGFyZ2V0KQogewogICAgIEpTQ2VsbCogY3VycmVudCA9IGJhc2U7CiAgICAgVk0mIHZtID0g
YmFzZS0+dm0oKTsKIAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKIAotICAgIHVzZXNQb2x5UHJv
dG8gPSBmYWxzZTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4g
cmVzdWx0KG5ldyBQb2x5UHJvdG9BY2Nlc3NDaGFpbigpKTsKIAogICAgIGZvciAodW5zaWduZWQg
aXRlcmF0aW9uTnVtYmVyID0gMDsgdHJ1ZTsgKytpdGVyYXRpb25OdW1iZXIpIHsKICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0pOwogCi0gICAgICAg
IGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5pc09iamVjdCgpKTsKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5G
bGF0dGVuZWRCZWZvcmUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
ICAgICAgICAgc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgYXNPYmpl
Y3QoY3VycmVudCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlv
bmFyeSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtNzcsMTIgKzcwLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0Fj
Y2Vzc0NoYWluPiBQbwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICAv
LyBXZSBvbmx5IGhhdmUgcG9seSBwcm90byBpZiB3ZSBuZWVkIHRvIGFjY2VzcyBvdXIgcHJvdG90
eXBlIHZpYQotICAgICAgICAvLyB0aGUgcG9seSBwcm90byBwcm90b2NvbC4gSWYgdGhlIHNsb3Qg
YmFzZSBpcyB0aGUgb25seSBwb2x5IHByb3RvCi0gICAgICAgIC8vIHRoaW5nIGluIHRoZSBjaGFp
biwgYW5kIHdlIGhhdmUgYSBjYWNoZSBoaXQgb24gaXQsIHRoZW4gd2UncmUgbm90Ci0gICAgICAg
IC8vIHBvbHkgcHJvdG8uCi0gICAgICAgIHVzZXNQb2x5UHJvdG8gfD0gc3RydWN0dXJlLT5oYXNQ
b2x5UHJvdG8oKTsKLQogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+cHJv
dG90eXBlRm9yTG9va3VwKGdsb2JhbE9iamVjdCwgY3VycmVudCk7CiAgICAgICAgIGlmIChwcm90
b3R5cGUuaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCShyZXZp
c2lvbiAyNTA5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3Rv
QWNjZXNzQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAg
ICAgUG9seVByb3RvQWNjZXNzQ2hhaW4oUG9seVByb3RvQWNjZXNzQ2hhaW4mKSA9IGRlZmF1bHQ7
CiAKICAgICAvLyBSZXR1cm5zIG51bGxwdHIgd2hlbiBpbnZhbGlkLgotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNyZWF0ZShKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90JiwgYm9vbCYgdXNlc1BvbHlQcm90byk7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0LCBib29sJiB1
c2VzUG9seVByb3RvKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJhc2UsIGNvbnN0IFByb3Bl
cnR5U2xvdCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdl
dCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNsb25lKCkK
ICAgICB7CkBAIC03Myw2ICs3MywxMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICBTdHJ1Y3R1cmUqIHNsb3RCYXNlU3RydWN0dXJlKFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2NoYWluLnNpemUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBtX2NoYWluLmxhc3QoKTsKKyAgICAgICAgcmV0dXJuIGJhc2VTdHJ1Y3R1cmU7CisgICAg
fQorCiBwcml2YXRlOgogICAgIFBvbHlQcm90b0FjY2Vzc0NoYWluKCkgPSBkZWZhdWx0OwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDI1MDk0OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5MCw2ICsyOTAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRC
eUlECiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRC
ZWZvcmUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwog
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJl
KHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlQ2VsbCkpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUmV0cnlDYWNoZUxhdGVyOyAvLyBXZSBtYXkgaGF2ZSBjaGFuZ2VkIHByb3BlcnR5IG9m
ZnNldHMuCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNV
bnNldCgpICYmIHN0cnVjdHVyZS0+dHlwZUluZm8oKS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVy
ZUZvclByb3BlcnR5QWJzZW5jZSgpKQpAQCAtMjk4LDE0ICsyOTksMjEgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogICAgICAgICAgICAgICAgIC8vIElmIGEga2lu
ZCBpcyBHZXRCeUlES2luZDo6RGlyZWN0LCB3ZSBkbyBub3QgbmVlZCB0byBpbnZlc3RpZ2F0ZSBw
cm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCiAgICAgICAgICAgICAgICAgLy8gQ2FjaGVhYmlsaXR5
IGp1c3QgZGVwZW5kcyBvbiB0aGUgaGVhZCBzdHJ1Y3R1cmUuCiAgICAgICAgICAgICAgICAgaWYg
KGtpbmQgIT0gR2V0QnlJREtpbmQ6OkRpcmVjdCkgewotICAgICAgICAgICAgICAgICAgICBib29s
IHVzZXNQb2x5UHJvdG87Ci0gICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWlu
ID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGJhc2VDZWxsLCBzbG90LCB1c2VzUG9seVByb3RvKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNh
Y2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwgc2xvdCk7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVT
dGF0dXMtPmZsYXR0ZW5lZERpY3Rpb25hcnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFByb3BlcnR5IG9mZnNldHMgbWF5IGhhdmUgY2hhbmdlZCBkdWUgdG8gZmxhdHRlbmluZy4gV2Un
bGwgY2FjaGUgbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNo
ZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCF1c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+
dXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNz
Q2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgYmFzZUNlbGwsIHNsb3QpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFw
cm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNs
b3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBwcm90b3R5cGVBY2Nlc3NDaGFpbi0+c2xvdEJhc2VT
dHJ1Y3R1cmUoc3RydWN0dXJlKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpID09IG9mZnNldCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBX
ZSB1c2UgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgaW5zdGVhZCBmb3IgZmFzdGVyIGFjY2Vz
c2VzLgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBudWxs
cHRyOwogCkBAIC0zMTgsNiArMzI2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlR2V0QnlJRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9IGdl
bmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1Y3R1cmUsIHNsb3Quc2xv
dEJhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lLmlt
cGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWNvbmRp
dGlvblNldC5pc1ZhbGlkKCkgfHwgY29uZGl0aW9uU2V0LnNsb3RCYXNlQ29uZGl0aW9uKCkub2Zm
c2V0KCkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25z
Rm9yUHJvdG90eXBlUHJvcGVydHlIaXRDdXN0b20oCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZtLCBjb2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5zbG90QmFzZSgpLApA
QCAtMzI4LDggKzMzNyw2IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5
SUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IG9mZnNldCA9IHNsb3QuaXNVbnNldCgpID8gaW52YWxpZE9mZnNldCA6IHNsb3QuY2FjaGVkT2Zm
c2V0KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGdldHRlciA9
IG51bGxwdHI7CkBAIC00OTYsMTIgKzUwMywxMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlECiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0Jl
ZW5GbGF0dGVuZWRCZWZvcmUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZl
VXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9u
YXJ5U3RydWN0dXJlKHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlVmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQotICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSwgMCwgb2Zmc2V0
KTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShzdHJ1
Y3R1cmUsIGlkZW50LmltcGwoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpOb25lKSwgb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSB8
fCAhbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCkBAIC01MTIsMjIgKzUxOCwyMSBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlECiAgICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3ND
aGFpbjsKICAgICAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRp
b25TZXQ7CiAgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gTm90RGlyZWN0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGJvb2wgdXNlc1BvbHlQcm90bzsKLSAgICAgICAgICAgICAgICAgICAg
cHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIG51bGxwdHIsIHVzZXNQb2x5UHJvdG8p
OwotICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIGludmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90
eXBlIHByb3BlcnR5LgorICAgICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlU3RhdHVzID0gcHJl
cGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IGJhc2VDZWxsLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjYWNoZVN0YXR1
cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAg
ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VzUG9seVByb3Rv
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykg
eworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNl
bGwsIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nl
c3NDaGFpbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbmRpdGlvblNldCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVDb25k
aXRpb25zRm9yUHJvcGVydHlTZXR0ZXJNaXNzKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBuZXdTdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNG
b3JQcm9wZXJ0eVNldHRlck1pc3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0sIGNv
ZGVCbG9jaywgZXhlYywgbmV3U3RydWN0dXJlLCBpZGVudC5pbXBsKCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICB9
Ci0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNz
Q2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIG9mZnNldCwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwpAQCAtNTM4
LDE4ICs1NDMsMTggQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRAog
ICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJv
dG90eXBlQWNjZXNzQ2hhaW47CiAKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5iYXNlKCkgIT0g
YmFzZVZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlc1BvbHlQcm90bzsKLSAg
ICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3ND
aGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3Qu
YmFzZSgpLCB1c2VzUG9seVByb3RvKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5
cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQncyBpbnZhbGlk
IHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAgICAgICAgICAgICAg
YXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCkpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgICAgICBpZiAoIXVzZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNh
Y2hlU3RhdHVzLT51c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90
b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVs
bHB0cjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlI
aXRDdXN0b20oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ss
IGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5iYXNlKCksIGlkZW50LmltcGwoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm90b3R5cGVQcm9wZXJ0
eUhpdEN1c3RvbSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBl
eGVjLCBzdHJ1Y3R1cmUsIHNsb3QuYmFzZSgpLCBpZGVudC5pbXBsKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC01NjQs
MTggKzU2OSwyMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlECiAg
ICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQo
KTsKIAogICAgICAgICAgICAgICAgIGlmIChzbG90LmJhc2UoKSAhPSBiYXNlVmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYm9vbCB1c2VzUG9seVByb3RvOwotICAgICAgICAgICAgICAgICAg
ICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCksIHVzZXNQb2x5
UHJvdG8pOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIGludmFsaWQgdG8gYWNjZXNzIHRoaXMg
cHJvdG90eXBlIHByb3BlcnR5LgorICAgICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlU3RhdHVz
ID0gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGJhc2VDZWxsLCBzbG90LmJhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
Y2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVT
dGF0dXMtPmZsYXR0ZW5lZERpY3Rpb25hcnkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gUmV0cnlDYWNoZUxhdGVyOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICghdXNlc1BvbHlQ
cm90bykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0dXMtPnVzZXNQb2x5UHJv
dG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9s
eVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJh
c2VDZWxsLCBzbG90LmJhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3Rv
dHlwZUFjY2Vzc0NoYWluKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZl
VXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcHJvdG90eXBlQWNj
ZXNzQ2hhaW4tPnNsb3RCYXNlU3RydWN0dXJlKGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pKS0+Z2V0
KHZtLCBpZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBudWxscHRyOwotICAgICAg
ICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm90b3R5cGVQcm9wZXJ0eUhpdCgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBz
bG90LmJhc2UoKSwgaWRlbnQuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRp
dGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwg
c2xvdC5iYXNlKCksIGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7CiAKQEAgLTU4NCw3ICs1OTIsNiBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlECiAKICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl
dCA9IGNvbmRpdGlvblNldC5zbG90QmFzZUNvbmRpdGlvbigpLm9mZnNldCgpOwogICAgICAgICAg
ICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBuZXdD
YXNlID0gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKApAQCAtNjY3LDM0ICs2NzQsNDMg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpICE9IGJhc2UpIHsKLSAgICAgICAg
ICAgICAgICBib29sIHVzZXNQb2x5UHJvdG87Ci0gICAgICAgICAgICAgICAgcHJvdG90eXBlQWNj
ZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgYmFzZSwgc2xvdCwgdXNlc1BvbHlQcm90byk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAgICAgICAgICAvLyBJdCdz
IGludmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90eXBlIHByb3BlcnR5LgorICAgICAgICAgICAg
ICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgc2xvdCk7CisgICAgICAgICAgICAgICAg
aWYgKCFjYWNoZVN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2Fj
aGU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghdXNlc1BvbHlQcm90
bykgeworICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+ZmxhdHRlbmVkRGljdGlvbmFy
eSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKKworICAgICAg
ICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAg
ICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVh
dGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlLCBzbG90KTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgcHJvdG90eXBlQWNjZXNzQ2hhaW4tPnNs
b3RCYXNlU3RydWN0dXJlKHN0cnVjdHVyZSktPmdldCh2bSwgaWRlbnQuaW1wbCgpKSA9PSBzbG90
LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5
SGl0KAogICAgICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0
dXJlLCBzbG90LnNsb3RCYXNlKCksIGlkZW50LmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAg
IGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChz
bG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgY29uZGl0aW9uU2V0LnNsb3RCYXNlQ29uZGl0aW9u
KCkub2Zmc2V0KCkgPT0gc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYm9vbCB1c2VzUG9s
eVByb3RvOwotICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nl
c3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgc2xvdCwg
dXNlc1BvbHlQcm90byk7Ci0gICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7
Ci0gICAgICAgICAgICAgICAgLy8gSXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlw
ZSBwcm9wZXJ0eS4KKyAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlUHJvdG90
eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgbnVs
bHB0cik7CisgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoIXVz
ZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90
bykgeworICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNj
ZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2UsIHNsb3Qp
OworICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBlQWNjZXNzQ2hhaW4pCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7CiAgICAgICAgICAg
ICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlNaXNzKAog
ICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1Y3R1cmUsIGlkZW50
LmltcGwoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCi0gICAgICAg
ICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Oklu
QWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJh
c2UoKSA9PSBiYXNlKSk7CiAKQEAgLTc1NCw3ICs3NzAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVJbnN0YW5jCiAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0cnVjdHVyZS0+
cHJvdG90eXBlUXVlcmllc0FyZUNhY2hlYWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFRlYWNoIHRoaXMgdG8gZG8gcG9seSBwcm90by4KICAgICAgICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NjYzCi0KKyAgICAgICAgICAg
ICAgICBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgdmFsdWUsIHdhc0ZvdW5kID8gcHJvdG90eXBlIDogbnVsbHB0cik7CiAgICAgICAg
ICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0ID0gZ2VuZXJh
dGVDb25kaXRpb25zRm9ySW5zdGFuY2VPZigKICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVC
bG9jaywgZXhlYywgc3RydWN0dXJlLCBwcm90b3R5cGUsIHdhc0ZvdW5kKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lv
biAyNTA5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDksNiArNzA5LDggQEAgc3RhdGljIHZvaWQgc2V0dXBH
ZXRCeUlkUHJvdG90eXBlQ2FjaGUoRQogICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9u
YXJ5U3RydWN0dXJlKHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlQ2VsbCkpOwogICAgIH0KIAor
ICAgIHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBiYXNlQ2VsbCwgc2xvdCk7CisKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCBjb25kaXRpb25zOwogICAgIGlmIChzbG90LmlzVW5zZXQoKSkKICAgICAgICAgY29uZGl0aW9u
cyA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgY29kZUJsb2NrLCBleGVj
LCBzdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCShyZXZpc2lvbiAyNTA5NDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNywxMSArMTA3LDEzIEBAIHZvaWQgU3RydWN0dXJlUmFyZURh
dGE6OnNldE9iamVjdFRvU3RyaW4KIAogICAgICAgICAvLyBUaGlzIHdpbGwgbm90IGNyZWF0ZSBh
IGNvbmRpdGlvbiBmb3IgdGhlIGN1cnJlbnQgc3RydWN0dXJlIGJ1dCB0aGF0IGlzIGdvb2QgYmVj
YXVzZSB3ZSBrbm93IHRoZSBTeW1ib2wudG9TdHJpbmdUYWcKICAgICAgICAgLy8gaXMgbm90IG9u
IHRoZSBvd25TdHJ1Y3R1cmUgc28gd2Ugd2lsbCB0cmFuc2lzaXRpb24gaWYgb25lIGlzIGFkZGVk
IGFuZCB0aGlzIGNhY2hlIHdpbGwgbm8gbG9uZ2VyIGJlIHVzZWQuCisgICAgICAgIHByZXBhcmVQ
cm90b3R5cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBvd25T
dHJ1Y3R1cmUsIHRvU3RyaW5nVGFnU3ltYm9sU2xvdC5zbG90QmFzZSgpKTsKICAgICAgICAgY29u
ZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXQodm0s
IHRoaXMsIGV4ZWMsIG93blN0cnVjdHVyZSwgdG9TdHJpbmdUYWdTeW1ib2xTbG90LnNsb3RCYXNl
KCksIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLmltcGwoKSk7CiAgICAgICAg
IEFTU0VSVCghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSB8fCBjb25kaXRpb25TZXQuaGFzT25lU2xv
dEJhc2VDb25kaXRpb24oKSk7Ci0gICAgfSBlbHNlIGlmICh0b1N0cmluZ1RhZ1N5bWJvbFNsb3Qu
aXNVbnNldCgpKQorICAgIH0gZWxzZSBpZiAodG9TdHJpbmdUYWdTeW1ib2xTbG90LmlzVW5zZXQo
KSkgeworICAgICAgICBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgb3duU3RydWN0dXJlLCBudWxscHRyKTsKICAgICAgICAgY29uZGl0
aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlNaXNzKHZtLCB0aGlzLCBleGVj
LCBvd25TdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLmltcGwo
KSk7Ci0gICAgZWxzZQorICAgIH0gZWxzZQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWNv
bmRpdGlvblNldC5pc1ZhbGlkKCkpIHsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTAyNykKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTEwLTExICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIENhbm9uaWNhbGl6ZSBob3cgd2UgcHJl
cGFyZSB0aGUgcHJvdG90eXBlIGNoYWluIGZvciBpbmxpbmUgY2FjaGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODI3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81NjE5MzkxOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTktMTAt
MTEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0
ZSBidWlsZC53ZWJraXQub3JnIGJhc2VkaXIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1z
dHJlc3MtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10
ZXN0cwkocmV2aXNpb24gMjUwOTQ4KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10
ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNDg4LDcgKzQ4OCw3IEBAICRudW1QYXNzZXMgPSAwCiAK
ICMgV2UgZm9yY2UgYWxsIHRlc3RzIHRvIHVzZSBhIHNtYWxsZXIgKDEuNU0pIHN0YWNrIHNvIHRo
YXQgc3RhY2sgb3ZlcmZsb3cgdGVzdHMgY2FuIHJ1biBmYXN0ZXIuCiBCQVNFX09QVElPTlMgPSBb
Ii0tdXNlRlRMSklUPWZhbHNlIiwgIi0tdXNlRnVuY3Rpb25Eb3RBcmd1bWVudHM9dHJ1ZSIsICIt
LXZhbGlkYXRlRXhjZXB0aW9uQ2hlY2tzPXRydWUiLCAiLS11c2VEb2xsYXJWTT10cnVlIiwgIi0t
bWF4UGVyVGhyZWFkU3RhY2tVc2FnZT0xNTcyODY0Il0KLUVBR0VSX09QVElPTlMgPSBbIi0tdGhy
ZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA9MTAiLCAiLS10aHJlc2hvbGRGb3JKSVRTb29uPTEwIiwg
Ii0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcD0yMCIsICItLXRocmVzaG9sZEZvck9w
dGltaXplQWZ0ZXJMb25nV2FybVVwPTIwIiwgIi0tdGhyZXNob2xkRm9yT3B0aW1pemVTb29uPTIw
IiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRlcldhcm1VcD0yMCIsICItLXRocmVzaG9s
ZEZvckZUTE9wdGltaXplU29vbj0yMCIsICItLXRocmVzaG9sZEZvck9NR09wdGltaXplQWZ0ZXJX
YXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPTUdPcHRpbWl6ZVNvb249MjAiLCAiLS1tYXhpbXVt
RXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aD0xNTAwMDAiLCAiLS11c2VFYWdlckNvZGVCbG9ja0pl
dHRpc29uVGltaW5nPXRydWUiXQorRUFHRVJfT1BUSU9OUyA9IFsiLS10aHJlc2hvbGRGb3JKSVRB
ZnRlcldhcm1VcD0xMCIsICItLXRocmVzaG9sZEZvckpJVFNvb249MTAiLCAiLS10aHJlc2hvbGRG
b3JPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwgIi0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxv
bmdXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb249MjAiLCAiLS10aHJlc2hv
bGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1p
emVTb29uPTIwIiwgIi0tdGhyZXNob2xkRm9yT01HT3B0aW1pemVBZnRlcldhcm1VcD0yMCIsICIt
LXRocmVzaG9sZEZvck9NR09wdGltaXplU29vbj0yMCIsICItLW1heGltdW1FdmFsQ2FjaGVhYmxl
U291cmNlTGVuZ3RoPTE1MDAwMCIsICItLXVzZUVhZ2VyQ29kZUJsb2NrSmV0dGlzb25UaW1pbmc9
dHJ1ZSIsICItLXJlcGF0Y2hCdWZmZXJpbmdDb3VudGRvd249MCJdCiAjIE5PVEU6IFRlc3RzIHJl
bHkgb24gdGhpcyB1c2luZyBzY3JpYmJsZUZyZWVDZWxscy4KIE5PX0NKSVRfT1BUSU9OUyA9IFsi
LS11c2VDb25jdXJyZW50SklUPWZhbHNlIiwgIi0tdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA9
MTAwIiwgIi0tc2NyaWJibGVGcmVlQ2VsbHM9dHJ1ZSJdCiBCM08xX09QVElPTlMgPSBbIi0tZGVm
YXVsdEIzT3B0TGV2ZWw9MSJdCg==
</data>
<flag name="commit-queue"
          id="396647"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380902</attachid>
            <date>2019-10-14 11:30:34 -0700</date>
            <delta_ts>2019-10-14 12:11:57 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>31767</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTA5NDgpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE5LTEwLTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIENhbm9uaWNhbGl6ZSBob3cgd2UgcHJlcGFyZSB0aGUgcHJvdG90eXBl
IGNoYWluIGZvciBpbmxpbmUgY2FjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjE5Mzkx
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgICogc3Ry
ZXNzL2NhY2hlLWNvcnJlY3Qtb2Zmc2V0LWFmdGVyLWZsYXR0ZW5pbmcuanM6IEFkZGVkLgorICAg
ICAgICAoYXNzZXJ0KToKKwogMjAxOS0xMC0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGwgb3V0IHIyNTA4NzgKSW5kZXg6IEpT
VGVzdHMvc3RyZXNzL2NhY2hlLWNvcnJlY3Qtb2Zmc2V0LWFmdGVyLWZsYXR0ZW5pbmcuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvY2FjaGUtY29ycmVjdC1vZmZzZXQtYWZ0ZXItZmxh
dHRlbmluZy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9jYWNoZS1jb3JyZWN0
LW9mZnNldC1hZnRlci1mbGF0dGVuaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQg
QEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3I7Cit9CisKK2xldCBwID0ge307CitsZXQgbyA9IHt9Oworby5fX3Byb3RvX18gPSBwOwor
Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIHBbInAiICsgaV0gPSBpOwor
fQorcC5mb28gPSA0MjsKK2RlbGV0ZSBwLnAwOworZGVsZXRlIHAucDE7CitkZWxldGUgcC5wMjsK
K2RlbGV0ZSBwLnAzOworZGVsZXRlIHAucDQ7CitkZWxldGUgcC5wNTsKKworZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDsgKytpKSB7CisgICAgcC5mb28gPSBpOworICAgIGFzc2VydChvLmZvbyA9PT0g
aSk7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDk0OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw0NSBAQAorMjAxOS0xMC0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBDYW5vbmljYWxpemUgaG93IHdlIHByZXBhcmUgdGhlIHByb3RvdHlwZSBjaGFpbiBm
b3IgaW5saW5lIGNhY2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjgyNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYxOTM5MTk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBUaGlzIHBhdGNoIGNh
bm9uaWNhbGl6ZXMgaG93IHdlIHByZXBhcmUgdGhlIHByb3RvdHlwZSBjaGFpbiBmb3IgY2FjaGlu
Zy4gQm90aAorICAgICAgICBpbiB0aGUgcG9seSBwcm90byBjaGFpbiwgYW5kIHRoZSBnZW5lcmF0
ZUNvbmRpdGlvbnMqLCB3ZSB3ZXJlIGZsYXR0ZW5pbmcKKyAgICAgICAgZGljdGlvbmFyaWVzIGFz
IHdlIHdhbGsgdGhlIHByb3RvdHlwZSBjaGFpbi4gV2Ugbm93IHVuaWZ5IHRoYXQgaW50byBvbmUK
KyAgICAgICAgZnVuY3Rpb24gY2FsbGVkIGBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5n
YC4gSW4gdGhhdCwgd2UgZmxhdHRlbgorICAgICAgICBkaWN0aW9uYXJpZXMgYXMgd2UgdHJhdmVy
c2UgdGhlIHByb3RvdHlwZSBjaGFpbiwgYW5kIG5vdGUgaWYgYW55IG9iamVjdHMKKyAgICAgICAg
YXJlIHBvbHkgcHJvdG8uCisgICAgICAgIAorICAgICAgICBNeSBwYXRjaCBpbiByMjUwNTQwIG1h
ZGUgaXQgc28gd2Ugbm93IGZsYXR0ZW4gdW5jYWNoZWFibGUgZGljdGlvbmFyaWVzICh0aGlzCisg
ICAgICAgIHdhcyB0aGUgaW50ZW50aW9uIGFsbCBhbG9uZywgYnV0IGl0IHdhcyBhIHBlcmYgYnVn
IHRoYXQgd2UgZGlkbid0IGRvIHRoaXMpLiBUaGF0CisgICAgICAgIHJldmVhbGVkIHRoYXQgdGhl
IGlubGluZSBjYWNoaW5nIGNvZGUgY291bGQgdXNlIGEgc3RhbGUgUHJvcGVydHlPZmZzZXQgd2hl
bgorICAgICAgICBmbGF0dGVuaW5nIGFuIHVuY2FjaGVhYmxlIGRpY3Rpb25hcnkuIFRoaXMgcGF0
Y2ggbWFrZXMgaXQgc28gd2UgdW5pdmVyc2FsbHkKKyAgICAgICAgdHJ5IGp1c3QgZGVmZXIgY2Fj
aGluZyB0byBsYXRlciBpZiB3ZSBlbmNvdW50ZXIgYSBzaXR1YXRpb24gd2hlcmUgd2UgZmxhdHRl
bgorICAgICAgICBhIGRpY3Rpb25hcnkgdGhhdCBjb3VsZCBiZSBhIHByb3BlcnR5IGhvbGRlci4K
KworICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcDoKKyAg
ICAgICAgKEpTQzo6Z2VuZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlRXF1aXZhbGVuY2VDb25j
dXJyZW50bHkpOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1p
c3NDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9w
ZXJ0eVNldHRlck1pc3NDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpwcmVwYXJlUHJvdG90
eXBlQ2hhaW5Gb3JDYWNoaW5nKToKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmNw
cDoKKyAgICAgICAgKEpTQzo6UG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaDoKKyAgICAgICAgKEpTQzo6UG9seVBy
b3RvQWNjZXNzQ2hhaW46OnNsb3RCYXNlU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBqaXQv
UmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChK
U0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeUlEKToKKyAg
ICAgICAgKEpTQzo6dHJ5Q2FjaGVJbnN0YW5jZU9mKToKKyAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVD
YWNoZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKwogMjAx
OS0xMC0wOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiBUcnkgdG8gZml4IGJ1aWxkIGZvciBXaW5kb3dzIENfTE9PUApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQuY3BwCShyZXZpc2lvbiAyNTA5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjcsMTQgKzI2Nyw5IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGdlbmVyYXRl
Q29uZGl0aW8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1lbnVtIENvbmN1cnJlbmN5IHsKLSAg
ICBNYWluVGhyZWFkLAotICAgIENvbmN1cnJlbnQKLX07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgogT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgZ2VuZXJhdGVDb25kaXRpb25zKAotICAg
IFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTT2JqZWN0KiBwcm90b3R5cGUsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IsCi0gICAgQ29u
Y3VycmVuY3kgY29uY3VycmVuY3kgPSBNYWluVGhyZWFkKQorICAgIFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90
b3R5cGUsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgVmVjdG9yPE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uPiBjb25kaXRpb25zOwogICAgIApAQCAtMzE0LDIxICszMDksOSBAQCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpCiAgICAgICAgIHN0cnVjdHVyZSA9
IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzdHJ1Y3R1cmUt
PmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBpZiAoY29uY3VycmVuY3kgPT0gTWFpblRo
cmVhZCkgewotICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRC
ZWZvcmUoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IkRpY3Rpb25hcnkgaGFzIGJlZW4gZmxhdHRlbmVkIGJlZm9yZSwgc28gaW52YWxpZC5cbiIpOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Omlu
dmFsaWQoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiRmxhdHRlbmluZyAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUpKTsKLSAgICAg
ICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBvYmpl
Y3QpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiQ2Fubm90IGZsYXR0ZW4gZGljdGlvbmFyeSB3aGVuIG5vdCBvbiBtYWluIHRocmVh
ZCwgc28gaW52YWxpZC5cbiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0SW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgICAg
ICAgICAgZGF0YUxvZygiQ2Fubm90IGNhY2hlIGRpY3Rpb25hcnkuXG4iKTsKKyAgICAgICAgICAg
IHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCgpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFmdW5jdG9yKGNvbmRpdGlvbnMsIG9iamVjdCkpIHsKQEAgLTQ4Nyw3
ICs0NzAsNyBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29uZGl0aW9ucy5hcHBlbmQo
cmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LCBDb25jdXJyZW50
KTsKKyAgICAgICAgfSk7CiB9CiAKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRl
Q29uZGl0aW9uc0ZvclByb3BlcnR5TWlzc0NvbmN1cnJlbnRseSgKQEAgLTUwMSw3ICs0ODQsNyBA
QCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29uZGl0aW9ucy5hcHBlbmQocmVzdWx0KTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LCBDb25jdXJyZW50KTsKKyAgICAg
ICAgfSk7CiB9CiAKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9u
c0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRseSgKQEAgLTUxNiw3ICs0OTksNyBAQCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBnZW5lcmF0ZUNvbmRpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29uZGl0aW9ucy5hcHBlbmQocmVzdWx0KTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LCBDb25jdXJyZW50KTsKKyAgICAgICAg
fSk7CiB9CiAKIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGdlbmVyYXRlQ29uZGl0aW9uRm9yU2Vs
ZkVxdWl2YWxlbmNlKApAQCAtNTI1LDUgKzUwOCw4NCBAQCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biBnZW5lcmF0ZUNvbmRpdGlvCiAgICAgcmV0dXJuIGdlbmVyYXRlQ29uZGl0aW9uKHZtLCBvd25l
ciwgb2JqZWN0LCB1aWQsIFByb3BlcnR5Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSk7CiB9CiAKKy8v
IEN1cnJlbnQgbWlnaHQgYmUgbnVsbC4gU3RydWN0dXJlIGNhbid0IGJlIG51bGwuCitzdGF0aWMg
T3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlUHJvdG90eXBlQ2hh
aW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY3VycmVu
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTT2JqZWN0KiB0YXJnZXQpCit7CisgICAgQVNTRVJU
KHN0cnVjdHVyZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgYm9v
bCBmb3VuZCA9IGZhbHNlOworICAgIGJvb2wgdXNlc1BvbHlQcm90byA9IGZhbHNlOworICAgIGJv
b2wgZmxhdHRlbmVkRGljdGlvbmFyeSA9IGZhbHNlOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgIGlmICgh
Y3VycmVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRCZWZvcmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5
U3RydWN0dXJlKHZtLCBhc09iamVjdChjdXJyZW50KSk7CisgICAgICAgICAgICBmbGF0dGVuZWRE
aWN0aW9uYXJ5ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc3RydWN0dXJlLT5w
cm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJveHkoKSkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudCA9
PSB0YXJnZXQpIHsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ugb25seSBoYXZlIHBvbHkgcHJvdG8gaWYgd2Ug
bmVlZCB0byBhY2Nlc3Mgb3VyIHByb3RvdHlwZSB2aWEKKyAgICAgICAgLy8gdGhlIHBvbHkgcHJv
dG8gcHJvdG9jb2wuIElmIHRoZSBzbG90IGJhc2UgaXMgdGhlIG9ubHkgcG9seSBwcm90bworICAg
ICAgICAvLyB0aGluZyBpbiB0aGUgY2hhaW4sIGFuZCB3ZSBoYXZlIGEgY2FjaGUgaGl0IG9uIGl0
LCB0aGVuIHdlJ3JlIG5vdAorICAgICAgICAvLyBwb2x5IHByb3RvLgorICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZTsKKyAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsKKyAg
ICAgICAgICAgIGlmICghY3VycmVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgdXNlc1BvbHlQcm90byA9IHRydWU7CisgICAgICAgICAgICBwcm90
b3R5cGUgPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChnbG9iYWxPYmplY3QsIGN1cnJl
bnQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+
cHJvdG90eXBlRm9yTG9va3VwKGdsb2JhbE9iamVjdCk7CisKKyAgICAgICAgaWYgKHByb3RvdHlw
ZS5pc051bGwoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjdXJyZW50ID0gYXNPYmpl
Y3QocHJvdG90eXBlKTsKKyAgICAgICAgc3RydWN0dXJlID0gY3VycmVudC0+c3RydWN0dXJlKHZt
KTsKKyAgICB9CisKKyAgICBpZiAoIWZvdW5kICYmICEhdGFyZ2V0KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgUHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzIHJlc3VsdDsK
KyAgICByZXN1bHQudXNlc1BvbHlQcm90byA9IHVzZXNQb2x5UHJvdG87CisgICAgcmVzdWx0LmZs
YXR0ZW5lZERpY3Rpb25hcnkgPSBmbGF0dGVuZWREaWN0aW9uYXJ5OworCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJl
UHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdldCkKK3sKKyAgICByZXR1cm4gcHJlcGFyZVByb3Rv
dHlwZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2UsIGJhc2UtPnN0cnVjdHVyZShn
bG9iYWxPYmplY3QtPnZtKCkpLCB0YXJnZXQpOworfQorCitPcHRpb25hbDxQcm90b3R5cGVDaGFp
bkNhY2hpbmdTdGF0dXM+IHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgSlNPYmplY3QqIHRhcmdldCA9IHNsb3QuaXNVbnNldCgpID8gbnVsbHB0ciA6
IHNsb3Quc2xvdEJhc2UoKTsKKyAgICByZXR1cm4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2Fj
aGluZyhnbG9iYWxPYmplY3QsIGJhc2UsIHRhcmdldCk7Cit9CisKK09wdGlvbmFsPFByb3RvdHlw
ZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUsIEpTT2Jq
ZWN0KiB0YXJnZXQpCit7CisgICAgcmV0dXJuIHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hp
bmcoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBiYXNlU3RydWN0dXJlLCB0YXJnZXQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgJKHJldmlzaW9u
IDI1MDk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNCArMTg5LDEzIEBAIE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0IGdlbmVyYXRlQ29uZGkKIE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5U2V0dGVyTWlzc0NvbmN1cnJlbnRs
eSgKICAgICBWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBoZWFkU3RydWN0dXJlLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAorc3RydWN0IFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0
YXR1cyB7CisgICAgYm9vbCB1c2VzUG9seVByb3RvOworICAgIGJvb2wgZmxhdHRlbmVkRGljdGlv
bmFyeTsKK307CisKK09wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFy
ZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwg
Y29uc3QgUHJvcGVydHlTbG90Jik7CitPcHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0
dXM+IHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQpOworT3B0aW9uYWw8UHJvdG90eXBlQ2hhaW5DYWNo
aW5nU3RhdHVzPiBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0KTsKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNz
Q2hhaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAJKHJldmlzaW9uIDI1MDk0OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDMzICszMSwyNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RkOjp1bmlxdWVf
cHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90LCBib29sJiB1c2VzUG9seVByb3RvKQorc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBzbG90LmlzVW5zZXQoKSA/IG51bGxwdHIgOiBzbG90
LnNsb3RCYXNlKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2UsIHRhcmdl
dCwgdXNlc1BvbHlQcm90byk7CisgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3QsIGJhc2Us
IHRhcmdldCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gUG9s
eVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0NlbGwqIGJhc2UsIEpTT2JqZWN0KiB0YXJnZXQsIGJvb2wmIHVzZXNQb2x5UHJvdG8pCitzdGQ6
OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpj
cmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBKU09iamVj
dCogdGFyZ2V0KQogewogICAgIEpTQ2VsbCogY3VycmVudCA9IGJhc2U7CiAgICAgVk0mIHZtID0g
YmFzZS0+dm0oKTsKIAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKIAotICAgIHVzZXNQb2x5UHJv
dG8gPSBmYWxzZTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4g
cmVzdWx0KG5ldyBQb2x5UHJvdG9BY2Nlc3NDaGFpbigpKTsKIAogICAgIGZvciAodW5zaWduZWQg
aXRlcmF0aW9uTnVtYmVyID0gMDsgdHJ1ZTsgKytpdGVyYXRpb25OdW1iZXIpIHsKICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0pOwogCi0gICAgICAg
IGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5pc09iamVjdCgpKTsKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5G
bGF0dGVuZWRCZWZvcmUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
ICAgICAgICAgc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgYXNPYmpl
Y3QoY3VycmVudCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlv
bmFyeSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtNzcsMTIgKzcwLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0Fj
Y2Vzc0NoYWluPiBQbwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICAv
LyBXZSBvbmx5IGhhdmUgcG9seSBwcm90byBpZiB3ZSBuZWVkIHRvIGFjY2VzcyBvdXIgcHJvdG90
eXBlIHZpYQotICAgICAgICAvLyB0aGUgcG9seSBwcm90byBwcm90b2NvbC4gSWYgdGhlIHNsb3Qg
YmFzZSBpcyB0aGUgb25seSBwb2x5IHByb3RvCi0gICAgICAgIC8vIHRoaW5nIGluIHRoZSBjaGFp
biwgYW5kIHdlIGhhdmUgYSBjYWNoZSBoaXQgb24gaXQsIHRoZW4gd2UncmUgbm90Ci0gICAgICAg
IC8vIHBvbHkgcHJvdG8uCi0gICAgICAgIHVzZXNQb2x5UHJvdG8gfD0gc3RydWN0dXJlLT5oYXNQ
b2x5UHJvdG8oKTsKLQogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+cHJv
dG90eXBlRm9yTG9va3VwKGdsb2JhbE9iamVjdCwgY3VycmVudCk7CiAgICAgICAgIGlmIChwcm90
b3R5cGUuaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCShyZXZp
c2lvbiAyNTA5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3Rv
QWNjZXNzQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAg
ICAgUG9seVByb3RvQWNjZXNzQ2hhaW4oUG9seVByb3RvQWNjZXNzQ2hhaW4mKSA9IGRlZmF1bHQ7
CiAKICAgICAvLyBSZXR1cm5zIG51bGxwdHIgd2hlbiBpbnZhbGlkLgotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNyZWF0ZShKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCogYmFzZSwgY29uc3QgUHJvcGVydHlTbG90JiwgYm9vbCYgdXNlc1BvbHlQcm90byk7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gY3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBiYXNlLCBKU09iamVjdCogdGFyZ2V0LCBib29sJiB1
c2VzUG9seVByb3RvKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGJhc2UsIGNvbnN0IFByb3Bl
cnR5U2xvdCYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+IGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCogYmFzZSwgSlNPYmplY3QqIHRhcmdl
dCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNsb25lKCkK
ICAgICB7CkBAIC03Myw2ICs3MywxMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICBTdHJ1Y3R1cmUqIHNsb3RCYXNlU3RydWN0dXJlKFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2NoYWluLnNpemUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBtX2NoYWluLmxhc3QoKTsKKyAgICAgICAgcmV0dXJuIGJhc2VTdHJ1Y3R1cmU7CisgICAg
fQorCiBwcml2YXRlOgogICAgIFBvbHlQcm90b0FjY2Vzc0NoYWluKCkgPSBkZWZhdWx0OwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDI1MDk0OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5MCw2ICsyOTAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRC
eUlECiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5GbGF0dGVuZWRC
ZWZvcmUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwog
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJl
KHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlQ2VsbCkpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUmV0cnlDYWNoZUxhdGVyOyAvLyBXZSBtYXkgaGF2ZSBjaGFuZ2VkIHByb3BlcnR5IG9m
ZnNldHMuCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNV
bnNldCgpICYmIHN0cnVjdHVyZS0+dHlwZUluZm8oKS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVy
ZUZvclByb3BlcnR5QWJzZW5jZSgpKQpAQCAtMjk4LDE0ICsyOTksMjEgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogICAgICAgICAgICAgICAgIC8vIElmIGEga2lu
ZCBpcyBHZXRCeUlES2luZDo6RGlyZWN0LCB3ZSBkbyBub3QgbmVlZCB0byBpbnZlc3RpZ2F0ZSBw
cm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCiAgICAgICAgICAgICAgICAgLy8gQ2FjaGVhYmlsaXR5
IGp1c3QgZGVwZW5kcyBvbiB0aGUgaGVhZCBzdHJ1Y3R1cmUuCiAgICAgICAgICAgICAgICAgaWYg
KGtpbmQgIT0gR2V0QnlJREtpbmQ6OkRpcmVjdCkgewotICAgICAgICAgICAgICAgICAgICBib29s
IHVzZXNQb2x5UHJvdG87Ci0gICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWlu
ID0gUG9seVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGJhc2VDZWxsLCBzbG90LCB1c2VzUG9seVByb3RvKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNh
Y2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwgc2xvdCk7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVT
dGF0dXMtPmZsYXR0ZW5lZERpY3Rpb25hcnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFByb3BlcnR5IG9mZnNldHMgbWF5IGhhdmUgY2hhbmdlZCBkdWUgdG8gZmxhdHRlbmluZy4gV2Un
bGwgY2FjaGUgbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNo
ZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCF1c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+
dXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNz
Q2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgYmFzZUNlbGwsIHNsb3QpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFw
cm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNs
b3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBwcm90b3R5cGVBY2Nlc3NDaGFpbi0+c2xvdEJhc2VT
dHJ1Y3R1cmUoc3RydWN0dXJlKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpID09IG9mZnNldCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBX
ZSB1c2UgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgaW5zdGVhZCBmb3IgZmFzdGVyIGFjY2Vz
c2VzLgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBudWxs
cHRyOwogCkBAIC0zMTgsNiArMzI2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlR2V0QnlJRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9IGdl
bmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1Y3R1cmUsIHNsb3Quc2xv
dEJhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lLmlt
cGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWNvbmRp
dGlvblNldC5pc1ZhbGlkKCkgfHwgY29uZGl0aW9uU2V0LnNsb3RCYXNlQ29uZGl0aW9uKCkub2Zm
c2V0KCkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25z
Rm9yUHJvdG90eXBlUHJvcGVydHlIaXRDdXN0b20oCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZtLCBjb2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5zbG90QmFzZSgpLApA
QCAtMzI4LDggKzMzNyw2IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5
SUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IG9mZnNldCA9IHNsb3QuaXNVbnNldCgpID8gaW52YWxpZE9mZnNldCA6IHNsb3QuY2FjaGVkT2Zm
c2V0KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGdldHRlciA9
IG51bGxwdHI7CkBAIC00OTYsMTIgKzUwMywxMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlECiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0Jl
ZW5GbGF0dGVuZWRCZWZvcmUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZl
VXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9u
YXJ5U3RydWN0dXJlKHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlVmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQotICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSwgMCwgb2Zmc2V0
KTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShzdHJ1
Y3R1cmUsIGlkZW50LmltcGwoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpOb25lKSwgb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSB8
fCAhbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCkBAIC01MTIsMjIgKzUxOCwyMSBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlECiAgICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3ND
aGFpbjsKICAgICAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRp
b25TZXQ7CiAgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gTm90RGlyZWN0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGJvb2wgdXNlc1BvbHlQcm90bzsKLSAgICAgICAgICAgICAgICAgICAg
cHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIG51bGxwdHIsIHVzZXNQb2x5UHJvdG8p
OwotICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIGludmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90
eXBlIHByb3BlcnR5LgorICAgICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlU3RhdHVzID0gcHJl
cGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IGJhc2VDZWxsLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjYWNoZVN0YXR1
cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAg
ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VzUG9seVByb3Rv
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykg
eworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNl
bGwsIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nl
c3NDaGFpbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbmRpdGlvblNldCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVDb25k
aXRpb25zRm9yUHJvcGVydHlTZXR0ZXJNaXNzKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBuZXdTdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNG
b3JQcm9wZXJ0eVNldHRlck1pc3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0sIGNv
ZGVCbG9jaywgZXhlYywgbmV3U3RydWN0dXJlLCBpZGVudC5pbXBsKCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICB9
Ci0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNz
Q2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIG9mZnNldCwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwpAQCAtNTM4
LDE4ICs1NDMsMTggQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRAog
ICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJv
dG90eXBlQWNjZXNzQ2hhaW47CiAKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5iYXNlKCkgIT0g
YmFzZVZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlc1BvbHlQcm90bzsKLSAg
ICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3ND
aGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZUNlbGwsIHNsb3Qu
YmFzZSgpLCB1c2VzUG9seVByb3RvKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5
cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQncyBpbnZhbGlk
IHRvIGFjY2VzcyB0aGlzIHByb3RvdHlwZSBwcm9wZXJ0eS4KKyAgICAgICAgICAgICAgICAgICAg
YXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCkpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgICAgICBpZiAoIXVzZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNh
Y2hlU3RhdHVzLT51c2VzUG9seVByb3RvKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90
b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gbnVs
bHB0cjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlI
aXRDdXN0b20oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ss
IGV4ZWMsIHN0cnVjdHVyZSwgc2xvdC5iYXNlKCksIGlkZW50LmltcGwoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm90b3R5cGVQcm9wZXJ0
eUhpdEN1c3RvbSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBl
eGVjLCBzdHJ1Y3R1cmUsIHNsb3QuYmFzZSgpLCBpZGVudC5pbXBsKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC01NjQs
MTggKzU2OSwyMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlECiAg
ICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQo
KTsKIAogICAgICAgICAgICAgICAgIGlmIChzbG90LmJhc2UoKSAhPSBiYXNlVmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYm9vbCB1c2VzUG9seVByb3RvOwotICAgICAgICAgICAgICAgICAg
ICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVhdGUoZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlQ2VsbCwgc2xvdC5iYXNlKCksIHVzZXNQb2x5
UHJvdG8pOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIGludmFsaWQgdG8gYWNjZXNzIHRoaXMg
cHJvdG90eXBlIHByb3BlcnR5LgorICAgICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlU3RhdHVz
ID0gcHJlcGFyZVByb3RvdHlwZUNoYWluRm9yQ2FjaGluZyhleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGJhc2VDZWxsLCBzbG90LmJhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
Y2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVT
dGF0dXMtPmZsYXR0ZW5lZERpY3Rpb25hcnkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gUmV0cnlDYWNoZUxhdGVyOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICghdXNlc1BvbHlQ
cm90bykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdGF0dXMtPnVzZXNQb2x5UHJv
dG8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9s
eVByb3RvQWNjZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJh
c2VDZWxsLCBzbG90LmJhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3Rv
dHlwZUFjY2Vzc0NoYWluKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZl
VXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcHJvdG90eXBlQWNj
ZXNzQ2hhaW4tPnNsb3RCYXNlU3RydWN0dXJlKGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pKS0+Z2V0
KHZtLCBpZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBudWxscHRyOwotICAgICAg
ICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm90b3R5cGVQcm9wZXJ0eUhpdCgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0dXJlLCBz
bG90LmJhc2UoKSwgaWRlbnQuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRp
dGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5SGl0KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIGV4ZWMsIHN0cnVjdHVyZSwg
c2xvdC5iYXNlKCksIGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7CiAKQEAgLTU4NCw3ICs1OTIsNiBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlECiAKICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl
dCA9IGNvbmRpdGlvblNldC5zbG90QmFzZUNvbmRpdGlvbigpLm9mZnNldCgpOwogICAgICAgICAg
ICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBuZXdD
YXNlID0gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKApAQCAtNjY3LDM0ICs2NzQsNDMg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpICE9IGJhc2UpIHsKLSAgICAgICAg
ICAgICAgICBib29sIHVzZXNQb2x5UHJvdG87Ci0gICAgICAgICAgICAgICAgcHJvdG90eXBlQWNj
ZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nlc3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgYmFzZSwgc2xvdCwgdXNlc1BvbHlQcm90byk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikgewotICAgICAgICAgICAgICAgICAgICAvLyBJdCdz
IGludmFsaWQgdG8gYWNjZXNzIHRoaXMgcHJvdG90eXBlIHByb3BlcnR5LgorICAgICAgICAgICAg
ICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgc2xvdCk7CisgICAgICAgICAgICAgICAg
aWYgKCFjYWNoZVN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2Fj
aGU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghdXNlc1BvbHlQcm90
bykgeworICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+ZmxhdHRlbmVkRGljdGlvbmFy
eSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKKworICAgICAg
ICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90bykgeworICAgICAgICAgICAg
ICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IFBvbHlQcm90b0FjY2Vzc0NoYWluOjpjcmVh
dGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBiYXNlLCBzbG90KTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwcm90b3R5cGVBY2Nlc3NDaGFpbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgcHJvdG90eXBlQWNjZXNzQ2hhaW4tPnNs
b3RCYXNlU3RydWN0dXJlKHN0cnVjdHVyZSktPmdldCh2bSwgaWRlbnQuaW1wbCgpKSA9PSBzbG90
LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3RvdHlwZVByb3BlcnR5
SGl0KAogICAgICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgZXhlYywgc3RydWN0
dXJlLCBzbG90LnNsb3RCYXNlKCksIGlkZW50LmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAg
IGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChz
bG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgY29uZGl0aW9uU2V0LnNsb3RCYXNlQ29uZGl0aW9u
KCkub2Zmc2V0KCkgPT0gc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYm9vbCB1c2VzUG9s
eVByb3RvOwotICAgICAgICAgICAgcHJvdG90eXBlQWNjZXNzQ2hhaW4gPSBQb2x5UHJvdG9BY2Nl
c3NDaGFpbjo6Y3JlYXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgc2xvdCwg
dXNlc1BvbHlQcm90byk7Ci0gICAgICAgICAgICBpZiAoIXByb3RvdHlwZUFjY2Vzc0NoYWluKSB7
Ci0gICAgICAgICAgICAgICAgLy8gSXQncyBpbnZhbGlkIHRvIGFjY2VzcyB0aGlzIHByb3RvdHlw
ZSBwcm9wZXJ0eS4KKyAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlUHJvdG90
eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYmFzZSwgbnVs
bHB0cik7CisgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoIXVz
ZXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgIGlmIChjYWNoZVN0YXR1cy0+dXNlc1BvbHlQcm90
bykgeworICAgICAgICAgICAgICAgIHByb3RvdHlwZUFjY2Vzc0NoYWluID0gUG9seVByb3RvQWNj
ZXNzQ2hhaW46OmNyZWF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGJhc2UsIHNsb3Qp
OworICAgICAgICAgICAgICAgIGlmICghcHJvdG90eXBlQWNjZXNzQ2hhaW4pCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBwcm90b3R5cGVBY2Nlc3NDaGFpbiA9IG51bGxwdHI7CiAgICAgICAgICAg
ICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlNaXNzKAog
ICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBleGVjLCBzdHJ1Y3R1cmUsIGlkZW50
LmltcGwoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCi0gICAgICAg
ICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Oklu
QWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJh
c2UoKSA9PSBiYXNlKSk7CiAKQEAgLTc1NCw3ICs3NzAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVJbnN0YW5jCiAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0cnVjdHVyZS0+
cHJvdG90eXBlUXVlcmllc0FyZUNhY2hlYWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFRlYWNoIHRoaXMgdG8gZG8gcG9seSBwcm90by4KICAgICAgICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1NjYzCi0KKyAgICAgICAgICAg
ICAgICBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgdmFsdWUsIHdhc0ZvdW5kID8gcHJvdG90eXBlIDogbnVsbHB0cik7CiAgICAgICAg
ICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0ID0gZ2VuZXJh
dGVDb25kaXRpb25zRm9ySW5zdGFuY2VPZigKICAgICAgICAgICAgICAgICAgICAgdm0sIGNvZGVC
bG9jaywgZXhlYywgc3RydWN0dXJlLCBwcm90b3R5cGUsIHdhc0ZvdW5kKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lv
biAyNTA5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDksNiArNzA5LDggQEAgc3RhdGljIHZvaWQgc2V0dXBH
ZXRCeUlkUHJvdG90eXBlQ2FjaGUoRQogICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9u
YXJ5U3RydWN0dXJlKHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihiYXNlQ2VsbCkpOwogICAgIH0KIAor
ICAgIHByZXBhcmVQcm90b3R5cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBiYXNlQ2VsbCwgc2xvdCk7CisKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCBjb25kaXRpb25zOwogICAgIGlmIChzbG90LmlzVW5zZXQoKSkKICAgICAgICAgY29uZGl0aW9u
cyA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgY29kZUJsb2NrLCBleGVj
LCBzdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCShyZXZpc2lvbiAyNTA5NDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNywxMSArMTA3LDEzIEBAIHZvaWQgU3RydWN0dXJlUmFyZURh
dGE6OnNldE9iamVjdFRvU3RyaW4KIAogICAgICAgICAvLyBUaGlzIHdpbGwgbm90IGNyZWF0ZSBh
IGNvbmRpdGlvbiBmb3IgdGhlIGN1cnJlbnQgc3RydWN0dXJlIGJ1dCB0aGF0IGlzIGdvb2QgYmVj
YXVzZSB3ZSBrbm93IHRoZSBTeW1ib2wudG9TdHJpbmdUYWcKICAgICAgICAgLy8gaXMgbm90IG9u
IHRoZSBvd25TdHJ1Y3R1cmUgc28gd2Ugd2lsbCB0cmFuc2lzaXRpb24gaWYgb25lIGlzIGFkZGVk
IGFuZCB0aGlzIGNhY2hlIHdpbGwgbm8gbG9uZ2VyIGJlIHVzZWQuCisgICAgICAgIHByZXBhcmVQ
cm90b3R5cGVDaGFpbkZvckNhY2hpbmcoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBvd25T
dHJ1Y3R1cmUsIHRvU3RyaW5nVGFnU3ltYm9sU2xvdC5zbG90QmFzZSgpKTsKICAgICAgICAgY29u
ZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvdG90eXBlUHJvcGVydHlIaXQodm0s
IHRoaXMsIGV4ZWMsIG93blN0cnVjdHVyZSwgdG9TdHJpbmdUYWdTeW1ib2xTbG90LnNsb3RCYXNl
KCksIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLmltcGwoKSk7CiAgICAgICAg
IEFTU0VSVCghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSB8fCBjb25kaXRpb25TZXQuaGFzT25lU2xv
dEJhc2VDb25kaXRpb24oKSk7Ci0gICAgfSBlbHNlIGlmICh0b1N0cmluZ1RhZ1N5bWJvbFNsb3Qu
aXNVbnNldCgpKQorICAgIH0gZWxzZSBpZiAodG9TdHJpbmdUYWdTeW1ib2xTbG90LmlzVW5zZXQo
KSkgeworICAgICAgICBwcmVwYXJlUHJvdG90eXBlQ2hhaW5Gb3JDYWNoaW5nKGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgb3duU3RydWN0dXJlLCBudWxscHRyKTsKICAgICAgICAgY29uZGl0
aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlNaXNzKHZtLCB0aGlzLCBleGVj
LCBvd25TdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLmltcGwo
KSk7Ci0gICAgZWxzZQorICAgIH0gZWxzZQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWNv
bmRpdGlvblNldC5pc1ZhbGlkKCkpIHsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTAyNykKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTEwLTExICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIENhbm9uaWNhbGl6ZSBob3cgd2UgcHJl
cGFyZSB0aGUgcHJvdG90eXBlIGNoYWluIGZvciBpbmxpbmUgY2FjaGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyODI3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81NjE5MzkxOT4KKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtp
LgorCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKwogMjAxOS0xMC0x
MSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRl
IGJ1aWxkLndlYmtpdC5vcmcgYmFzZWRpcgpJbmRleDogVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRl
c3RzCShyZXZpc2lvbiAyNTA5NDgpCisrKyBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRl
c3RzCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsNyArNDg4LDcgQEAgJG51bVBhc3NlcyA9IDAKIAog
IyBXZSBmb3JjZSBhbGwgdGVzdHMgdG8gdXNlIGEgc21hbGxlciAoMS41TSkgc3RhY2sgc28gdGhh
dCBzdGFjayBvdmVyZmxvdyB0ZXN0cyBjYW4gcnVuIGZhc3Rlci4KIEJBU0VfT1BUSU9OUyA9IFsi
LS11c2VGVExKSVQ9ZmFsc2UiLCAiLS11c2VGdW5jdGlvbkRvdEFyZ3VtZW50cz10cnVlIiwgIi0t
dmFsaWRhdGVFeGNlcHRpb25DaGVja3M9dHJ1ZSIsICItLXVzZURvbGxhclZNPXRydWUiLCAiLS1t
YXhQZXJUaHJlYWRTdGFja1VzYWdlPTE1NzI4NjQiXQotRUFHRVJfT1BUSU9OUyA9IFsiLS10aHJl
c2hvbGRGb3JKSVRBZnRlcldhcm1VcD0xMCIsICItLXRocmVzaG9sZEZvckpJVFNvb249MTAiLCAi
LS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwgIi0tdGhyZXNob2xkRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb249MjAi
LCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwgIi0tdGhyZXNob2xk
Rm9yRlRMT3B0aW1pemVTb29uPTIwIiwgIi0tdGhyZXNob2xkRm9yT01HT3B0aW1pemVBZnRlcldh
cm1VcD0yMCIsICItLXRocmVzaG9sZEZvck9NR09wdGltaXplU29vbj0yMCIsICItLW1heGltdW1F
dmFsQ2FjaGVhYmxlU291cmNlTGVuZ3RoPTE1MDAwMCIsICItLXVzZUVhZ2VyQ29kZUJsb2NrSmV0
dGlzb25UaW1pbmc9dHJ1ZSJdCitFQUdFUl9PUFRJT05TID0gWyItLXRocmVzaG9sZEZvckpJVEFm
dGVyV2FybVVwPTEwIiwgIi0tdGhyZXNob2xkRm9ySklUU29vbj0xMCIsICItLXRocmVzaG9sZEZv
ck9wdGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9u
Z1dhcm1VcD0yMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplU29vbj0yMCIsICItLXRocmVzaG9s
ZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6
ZVNvb249MjAiLCAiLS10aHJlc2hvbGRGb3JPTUdPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwgIi0t
dGhyZXNob2xkRm9yT01HT3B0aW1pemVTb29uPTIwIiwgIi0tbWF4aW11bUV2YWxDYWNoZWFibGVT
b3VyY2VMZW5ndGg9MTUwMDAwIiwgIi0tdXNlRWFnZXJDb2RlQmxvY2tKZXR0aXNvblRpbWluZz10
cnVlIiwgIi0tcmVwYXRjaEJ1ZmZlcmluZ0NvdW50ZG93bj0wIl0KICMgTk9URTogVGVzdHMgcmVs
eSBvbiB0aGlzIHVzaW5nIHNjcmliYmxlRnJlZUNlbGxzLgogTk9fQ0pJVF9PUFRJT05TID0gWyIt
LXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiLCAiLS10aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0x
MDAiLCAiLS1zY3JpYmJsZUZyZWVDZWxscz10cnVlIl0KIEIzTzFfT1BUSU9OUyA9IFsiLS1kZWZh
dWx0QjNPcHRMZXZlbD0xIl0K
</data>

          </attachment>
      

    </bug>

</bugzilla>