<?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>204056</bug_id>
          
          <creation_ts>2019-11-10 00:09:12 -0800</creation_ts>
          <short_desc>AX: Implement isolated tree support for math objects</short_desc>
          <delta_ts>2019-11-15 10:33:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1589080</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-11-10 00:09:12 -0800</bug_when>
    <thetext>Implement isolated tree support for math objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589081</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-10 00:09:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/57054644&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589082</commentid>
    <comment_count>2</comment_count>
      <attachid>383238</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-11-10 00:10:54 -0800</bug_when>
    <thetext>Created attachment 383238
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589083</commentid>
    <comment_count>3</comment_count>
      <attachid>383238</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-11-10 00:11:35 -0800</bug_when>
    <thetext>Comment on attachment 383238
patch

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

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp:-37
&gt; -AXIsolatedObject::AXIsolatedObject(const AXCoreObject&amp; object)

Removing the const here because some of the math objects access children() which is non-const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589084</commentid>
    <comment_count>4</comment_count>
      <attachid>383239</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-11-10 00:12:28 -0800</bug_when>
    <thetext>Created attachment 383239
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589291</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-11-11 12:36:36 -0800</bug_when>
    <thetext>     setProperty(AXPropertyName::HelpText, object.helpTextAttributeValue().isolatedCopy());
+

AG: don&apos;t think the code style rules state this, but I would prefer (kindly
request) blank lines to have zero spaces. Otherwise VO reads &quot;space, space, ...&quot;
very annoying. There is an option in Xcode to automatically get rid off
trailing spaces, and that does the right thing.


-    static Ref&lt;AXIsolatedObject&gt; create(const AXCoreObject&amp;);
+    static Ref&lt;AXIsolatedObject&gt; create(AXCoreObject&amp;);

AG: Fine for now. But we should have the create function and the constructor to
take an AccessibilityObject, constructor marked as explicit. And a separate
copy constructor that takes an AXIsolatedObject.


+    AXIsolatedObject(AXCoreObject&amp;);
+    void initializeAttributeData(AXCoreObject&amp;);

AG: As in create, we should have an explicit constructor that takes an
AccessibilityObject, and a separate copy constructor. initializeAttributeData
should take an AccessibilityObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590067</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-11-13 15:29:09 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #5)
&gt;      setProperty(AXPropertyName::HelpText,
&gt; object.helpTextAttributeValue().isolatedCopy());
&gt; +
&gt; 
&gt; AG: don&apos;t think the code style rules state this, but I would prefer (kindly
&gt; request) blank lines to have zero spaces. Otherwise VO reads &quot;space, space,
&gt; ...&quot;
&gt; very annoying. There is an option in Xcode to automatically get rid off
&gt; trailing spaces, and that does the right thing.
&gt; 
&gt; 
&gt; -    static Ref&lt;AXIsolatedObject&gt; create(const AXCoreObject&amp;);
&gt; +    static Ref&lt;AXIsolatedObject&gt; create(AXCoreObject&amp;);
&gt; 
&gt; AG: Fine for now. But we should have the create function and the constructor
&gt; to
&gt; take an AccessibilityObject, constructor marked as explicit. And a separate
&gt; copy constructor that takes an AXIsolatedObject.
&gt; 
&gt; 
&gt; +    AXIsolatedObject(AXCoreObject&amp;);
&gt; +    void initializeAttributeData(AXCoreObject&amp;);
&gt; 
&gt; AG: As in create, we should have an explicit constructor that takes an
&gt; AccessibilityObject, and a separate copy constructor. initializeAttributeData
&gt; should take an AccessibilityObject.

Talked with Andres and we discussed at this time we have to deal with the fact that children() is non-const so we need to handle this here because we&apos;re calling children() now for the math things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590102</commentid>
    <comment_count>7</comment_count>
      <attachid>383513</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-11-13 16:27:31 -0800</bug_when>
    <thetext>Created attachment 383513
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590246</commentid>
    <comment_count>8</comment_count>
      <attachid>383513</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-14 07:28:23 -0800</bug_when>
    <thetext>Comment on attachment 383513
patch

Clearing flags on attachment: 383513

Committed r252457: &lt;https://trac.webkit.org/changeset/252457&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590247</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-14 07:28:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590255</commentid>
    <comment_count>10</comment_count>
      <attachid>383513</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-11-14 09:05:55 -0800</bug_when>
    <thetext>Comment on attachment 383513
patch

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

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp:201
&gt; +    AXID nodeID = WTF::switchOn(value,
&gt; +        [&amp;] (Optional&lt;AXID&gt; typedValue) {
&gt; +            if (!typedValue)
&gt; +                return InvalidAXID;
&gt; +        return typedValue.value();
&gt; +        },
&gt; +        [] (auto&amp;) { return InvalidAXID; }
&gt; +    );

I don’t understand the reason behind the [&amp;] capture; that mistake seems to be repeated over and over again in the other similar functions.

Also maybe we could write this in a way that&apos;s a little more readable using valueOr(InvalidAXID).

I don’t understand why we have both InvalidAXID and Optional&lt;AXID&gt;; two ways of doing the same thing. We should choose one idiom or the other rather than mixing the two. This here is extra code to translate between them.

Indentation mistake here. This return statement should be indented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590320</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-11-14 13:37:22 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Comment on attachment 383513 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=383513&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp:201
&gt; &gt; +    AXID nodeID = WTF::switchOn(value,
&gt; &gt; +        [&amp;] (Optional&lt;AXID&gt; typedValue) {
&gt; &gt; +            if (!typedValue)
&gt; &gt; +                return InvalidAXID;
&gt; &gt; +        return typedValue.value();
&gt; &gt; +        },
&gt; &gt; +        [] (auto&amp;) { return InvalidAXID; }
&gt; &gt; +    );
&gt; 
&gt; I don’t understand the reason behind the [&amp;] capture; that mistake seems to
&gt; be repeated over and over again in the other similar functions.
&gt; 
&gt; Also maybe we could write this in a way that&apos;s a little more readable using
&gt; valueOr(InvalidAXID).
&gt; 
&gt; I don’t understand why we have both InvalidAXID and Optional&lt;AXID&gt;; two ways
&gt; of doing the same thing. We should choose one idiom or the other rather than
&gt; mixing the two. This here is extra code to translate between them.
&gt; 
&gt; Indentation mistake here. This return statement should be indented.

Thanks for your feedback. Will look into make those changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590547</commentid>
    <comment_count>12</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-11-15 10:33:25 -0800</bug_when>
    <thetext>
&gt; Thanks for your feedback. Will look into make those changes

https://bugs.webkit.org/show_bug.cgi?id=204233</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383238</attachid>
            <date>2019-11-10 00:10:54 -0800</date>
            <delta_ts>2019-11-10 00:12:28 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_204056.txt</filename>
            <type>text/plain</type>
            <size>16037</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZw0KaW5kZXggYjVjY2ZhZjMzOTYuLmI5Y2E0MzRjMWZmIDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCkBA
IC0xLDMgKzEsMjIgQEANCisyMDE5LTExLTEwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBh
cHBsZS5jb20+DQorDQorICAgICAgICBBWDogSW1wbGVtZW50IGlzb2xhdGVkIHRyZWUgc3VwcG9y
dCBmb3IgbWF0aCBvYmplY3RzDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA0MDU2DQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcwNTQ2NDQ+DQor
DQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgIEltcGxl
bWVudCBpc29sYXRlZCB0cmVlIHN1cHBvcnQgZm9yIG1hdGggb2JqZWN0cy4NCisgICAgICAgIEFk
ZCBhIG1ldGhvZCBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyBvYmplY3RzLg0KKw0KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOg0KKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OkFYSXNvbGF0ZWRPYmplY3QpOg0KKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSk6DQorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOg0KKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNldE9iamVjdFByb3BlcnR5KToNCisgICAg
ICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpvYmplY3RBdHRyaWJ1dGVWYWx1ZSBjb25z
dCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
Tm9kZS5oOg0KKw0KIDIwMTktMTEtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4N
CiANCiAgICAgICAgIEFkZCBiYWNrL2ZvcndhcmQgY2FjaGUgcXVpcmsgZm9yIFZpbWVvLmNvbQ0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwDQppbmRleCA4YjU1NGY5OThiMi4uYTU4ZWNm
NGY4ZTggMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwDQpAQCAtMzQsNyArMzQs
NyBAQCBleHRlcm4gIkMiIGJvb2wgX0FYVUlFbGVtZW50UmVxdWVzdFNlcnZpY2VkQnlTZWNvbmRh
cnlBWFRocmVhZCh2b2lkKTsNCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotQVhJc29sYXRl
ZE9iamVjdDo6QVhJc29sYXRlZE9iamVjdChjb25zdCBBWENvcmVPYmplY3QmIG9iamVjdCkNCitB
WElzb2xhdGVkT2JqZWN0OjpBWElzb2xhdGVkT2JqZWN0KEFYQ29yZU9iamVjdCYgb2JqZWN0KQ0K
ICAgICA6IG1faWQob2JqZWN0Lm9iamVjdElEKCkpDQogew0KICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOw0KQEAgLTQ0LDE0ICs0NCwxNCBAQCBBWElzb2xhdGVkT2JqZWN0OjpBWElzb2xhdGVk
T2JqZWN0KGNvbnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0KQ0KICNlbmRpZg0KIH0NCiANCi1SZWY8
QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKGNvbnN0IEFYQ29yZU9i
amVjdCYgb2JqZWN0KQ0KK1JlZjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkT2JqZWN0Ojpj
cmVhdGUoQVhDb3JlT2JqZWN0JiBvYmplY3QpDQogew0KICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBWElzb2xhdGVkT2JqZWN0KG9iamVjdCkpOw0KIH0NCiANCiBBWElzb2xhdGVkT2JqZWN0Ojp+
QVhJc29sYXRlZE9iamVjdCgpID0gZGVmYXVsdDsNCiANCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6
OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKGNvbnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0KQ0KK3Zv
aWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3JlT2JqZWN0
JiBvYmplY3QpDQogew0KICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Um9sZVZhbHVl
LCBzdGF0aWNfY2FzdDxpbnQ+KG9iamVjdC5yb2xlVmFsdWUoKSkpOw0KICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6Um9sZVBsYXRmb3JtU3RyaW5nLCBvYmplY3Qucm9sZVBsYXRmb3Jt
U3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCkpOw0KQEAgLTcxLDYgKzcxLDUxIEBAIHZvaWQgQVhJc29s
YXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoY29uc3QgQVhDb3JlT2JqZWN0JiBv
YmplY3QpDQogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpUaXRsZSwgb2JqZWN0LnRp
dGxlQXR0cmlidXRlVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7DQogICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpEZXNjcmlwdGlvbiwgb2JqZWN0LmRlc2NyaXB0aW9uQXR0cmlidXRlVmFs
dWUoKS5pc29sYXRlZENvcHkoKSk7DQogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpI
ZWxwVGV4dCwgb2JqZWN0LmhlbHBUZXh0QXR0cmlidXRlVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7
DQorICAgIA0KKyAgICBpZiAoYm9vbCBpc01hdGhFbGVtZW50ID0gb2JqZWN0LmlzTWF0aEVsZW1l
bnQoKSkgew0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEVsZW1l
bnQsIGlzTWF0aEVsZW1lbnQpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OklzQW5vbnltb3VzTWF0aE9wZXJhdG9yLCBvYmplY3QuaXNBbm9ueW1vdXNNYXRoT3BlcmF0b3Io
KSk7DQorICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoRnJhY3Rpb24s
IG9iamVjdC5pc01hdGhGcmFjdGlvbigpKTsNCisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpJc01hdGhGZW5jZWQsIG9iamVjdC5pc01hdGhGZW5jZWQoKSk7DQorICAgICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQsIG9i
amVjdC5pc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpKTsNCisgICAgICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpJc01hdGhSb3csIG9iamVjdC5pc01hdGhSb3coKSk7DQorICAgICAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVW5kZXJPdmVyLCBvYmplY3QuaXNN
YXRoVW5kZXJPdmVyKCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Oklz
TWF0aFJvb3QsIG9iamVjdC5pc01hdGhSb290KCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OklzTWF0aFNxdWFyZVJvb3QsIG9iamVjdC5pc01hdGhTcXVhcmVSb290KCkp
Ow0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRleHQsIG9iamVj
dC5pc01hdGhUZXh0KCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Oklz
TWF0aE51bWJlciwgb2JqZWN0LmlzTWF0aE51bWJlcigpKTsNCisgICAgICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpJc01hdGhPcGVyYXRvciwgb2JqZWN0LmlzTWF0aE9wZXJhdG9yKCkp
Ow0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEZlbmNlT3BlcmF0
b3IsIG9iamVjdC5pc01hdGhGZW5jZU9wZXJhdG9yKCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OklzTWF0aFNlcGFyYXRvck9wZXJhdG9yLCBvYmplY3QuaXNNYXRoU2Vw
YXJhdG9yT3BlcmF0b3IoKSk7DQorICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
SXNNYXRoSWRlbnRpZmllciwgb2JqZWN0LmlzTWF0aElkZW50aWZpZXIoKSk7DQorICAgICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVGFibGUsIG9iamVjdC5pc01hdGhUYWJs
ZSgpKTsNCisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01hdGhUYWJsZVJv
dywgb2JqZWN0LmlzTWF0aFRhYmxlUm93KCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OklzTWF0aFRhYmxlQ2VsbCwgb2JqZWN0LmlzTWF0aFRhYmxlQ2VsbCgpKTsNCisg
ICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01hdGhNdWx0aXNjcmlwdCwgb2Jq
ZWN0LmlzTWF0aE11bHRpc2NyaXB0KCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OklzTWF0aFRva2VuLCBvYmplY3QuaXNNYXRoVG9rZW4oKSk7DQorICAgICAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aEZlbmNlZE9wZW5TdHJpbmcsIG9iamVjdC5tYXRo
RmVuY2VkT3BlblN0cmluZygpKTsNCisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpNYXRoRmVuY2VkQ2xvc2VTdHJpbmcsIG9iamVjdC5tYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSk7
DQorICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aExpbmVUaGlja25lc3Ms
IG9iamVjdC5tYXRoTGluZVRoaWNrbmVzcygpKTsNCisNCisgICAgICAgIHNldE9iamVjdFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpNYXRoUmFkaWNhbmRPYmplY3QsIG9iamVjdC5tYXRoUmFkaWNh
bmRPYmplY3QoKSk7DQorICAgICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
TWF0aFJvb3RJbmRleE9iamVjdCwgb2JqZWN0Lm1hdGhSb290SW5kZXhPYmplY3QoKSk7DQorICAg
ICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aFVuZGVyT2JqZWN0LCBv
YmplY3QubWF0aFVuZGVyT2JqZWN0KCkpOw0KKyAgICAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6Ok1hdGhPdmVyT2JqZWN0LCBvYmplY3QubWF0aE92ZXJPYmplY3QoKSk7DQor
ICAgICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aE51bWVyYXRvck9i
amVjdCwgb2JqZWN0Lm1hdGhOdW1lcmF0b3JPYmplY3QoKSk7DQorICAgICAgICBzZXRPYmplY3RQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aERlbm9taW5hdG9yT2JqZWN0LCBvYmplY3QubWF0
aERlbm9taW5hdG9yT2JqZWN0KCkpOw0KKyAgICAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6Ok1hdGhCYXNlT2JqZWN0LCBvYmplY3QubWF0aEJhc2VPYmplY3QoKSk7DQorICAg
ICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aFN1YnNjcmlwdE9iamVj
dCwgb2JqZWN0Lm1hdGhTdWJzY3JpcHRPYmplY3QoKSk7DQorICAgICAgICBzZXRPYmplY3RQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aFN1cGVyc2NyaXB0T2JqZWN0LCBvYmplY3QubWF0aFN1
cGVyc2NyaXB0T2JqZWN0KCkpOw0KKw0KKyAgICB9DQorfQ0KKw0KK3ZvaWQgQVhJc29sYXRlZE9i
amVjdDo6c2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBBWENv
cmVPYmplY3QqIG9iamVjdCkNCit7DQorICAgIGlmIChvYmplY3QpDQorICAgICAgICBzZXRQcm9w
ZXJ0eShwcm9wZXJ0eU5hbWUsIG9iamVjdC0+b2JqZWN0SUQoKSk7DQorICAgIGVsc2UNCisgICAg
ICAgIHNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgbnVsbHB0ciwgdHJ1ZSk7DQogfQ0KIA0KIHZv
aWQgQVhJc29sYXRlZE9iamVjdDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBBdHRyaWJ1dGVWYWx1ZVZhcmlhbnQmJiB2YWx1ZSwgYm9vbCBzaG91bGRSZW1vdmUpDQpA
QCAtMTQ1LDYgKzE5MCwyMiBAQCBBWElzb2xhdGVkVHJlZSogQVhJc29sYXRlZE9iamVjdDo6dHJl
ZSgpIGNvbnN0DQogICAgIHJldHVybiBtX2NhY2hlZFRyZWUuZ2V0KCk7DQogfQ0KIA0KK0FYQ29y
ZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6b2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdA0KK3sNCisgICAgYXV0byB2YWx1ZSA9IG1fYXR0cmli
dXRlTWFwLmdldChwcm9wZXJ0eU5hbWUpOw0KKyAgICBBWElEIG5vZGVJRCA9IFdURjo6c3dpdGNo
T24odmFsdWUsDQorICAgICAgICBbJl0gKE9wdGlvbmFsPEFYSUQ+IHR5cGVkVmFsdWUpIHsNCisg
ICAgICAgICAgICBpZiAoIXR5cGVkVmFsdWUpDQorICAgICAgICAgICAgICAgIHJldHVybiBJbnZh
bGlkQVhJRDsNCisgICAgICAgIHJldHVybiB0eXBlZFZhbHVlLnZhbHVlKCk7DQorICAgICAgICB9
LA0KKyAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiBJbnZhbGlkQVhJRDsgfQ0KKyAgICApOw0K
KyAgICANCisgICAgcmV0dXJuIHRyZWUoKS0+bm9kZUZvcklEKG5vZGVJRCkuZ2V0KCk7DQorfQ0K
Kw0KKw0KIEZsb2F0UmVjdCBBWElzb2xhdGVkT2JqZWN0OjpyZWN0QXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdA0KIHsNCiAgICAgYXV0byB2YWx1ZSA9IG1f
YXR0cmlidXRlTWFwLmdldChwcm9wZXJ0eU5hbWUpOw0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2Rl
LmgNCmluZGV4IGY5YTc2YTU0MDdjLi5iMmJlNjQ1NGZlNyAxMDA2NDQNCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oDQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZU5vZGUuaA0KQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgQVhJc29sYXRlZFRyZWU7DQogDQog
Y2xhc3MgQVhJc29sYXRlZE9iamVjdCBmaW5hbCA6IHB1YmxpYyBBWENvcmVPYmplY3Qgew0KIHB1
YmxpYzoNCi0gICAgc3RhdGljIFJlZjxBWElzb2xhdGVkT2JqZWN0PiBjcmVhdGUoY29uc3QgQVhD
b3JlT2JqZWN0Jik7DQorICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZE9iamVjdD4gY3JlYXRlKEFY
Q29yZU9iamVjdCYpOw0KICAgICB+QVhJc29sYXRlZE9iamVjdCgpOw0KIA0KICAgICB2b2lkIHNl
dE9iamVjdElEKEFYSUQgaWQpIG92ZXJyaWRlIHsgbV9pZCA9IGlkOyB9DQpAQCAtNTUwLDQ1ICs1
NTAsNDUgQEAgcHJpdmF0ZToNCiANCiAgICAgdm9pZCBub3RpZnlJZklnbm9yZWRWYWx1ZUNoYW5n
ZWQoKSBvdmVycmlkZSB7IH0NCiANCi0gICAgYm9vbCBpc01hdGhFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9vbCBpc01hdGhGcmFjdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNNYXRoRmVuY2VkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9vbCBpc01hdGhTdWJzY3JpcHRT
dXBlcnNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wg
aXNNYXRoUm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9vbCBp
c01hdGhVbmRlck92ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBi
b29sIGlzTWF0aFJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBi
b29sIGlzTWF0aFNxdWFyZVJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0K
LSAgICBib29sIGlzTWF0aFRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0K
LSAgICBib29sIGlzTWF0aE51bWJlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
DQotICAgIGJvb2wgaXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQ0KLSAgICBib29sIGlzTWF0aEZlbmNlT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQ0KLSAgICBib29sIGlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9vbCBpc01hdGhJZGVudGlmaWVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9vbCBpc01hdGhUYWJsZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNNYXRoVGFibGVS
b3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBib29sIGlzTWF0aFRh
YmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNN
YXRoTXVsdGlzY3JpcHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBi
b29sIGlzTWF0aFRva2VuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCisgICAg
Ym9vbCBpc01hdGhFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhFbGVtZW50KTsgfQ0KKyAgICBib29sIGlzTWF0
aEZyYWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpJc01hdGhGcmFjdGlvbik7IH0NCisgICAgYm9vbCBpc01hdGhGZW5jZWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OklzTWF0aEZlbmNlZCk7IH0NCisgICAgYm9vbCBpc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlw
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQpOyB9DQorICAgIGJvb2wgaXNNYXRoUm93
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpJc01hdGhSb3cpOyB9DQorICAgIGJvb2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhV
bmRlck92ZXIpOyB9DQorICAgIGJvb2wgaXNNYXRoUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoUm9vdCk7IH0NCisg
ICAgYm9vbCBpc01hdGhTcXVhcmVSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhTcXVhcmVSb290KTsgfQ0KKyAgICBi
b29sIGlzTWF0aFRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRleHQpOyB9DQorICAgIGJvb2wgaXNNYXRoTnVtYmVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpJc01hdGhOdW1iZXIpOyB9DQorICAgIGJvb2wgaXNNYXRoT3BlcmF0b3IoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0
aE9wZXJhdG9yKTsgfQ0KKyAgICBib29sIGlzTWF0aEZlbmNlT3BlcmF0b3IoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEZl
bmNlT3BlcmF0b3IpOyB9DQorICAgIGJvb2wgaXNNYXRoU2VwYXJhdG9yT3BlcmF0b3IoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
TWF0aFNlcGFyYXRvck9wZXJhdG9yKTsgfQ0KKyAgICBib29sIGlzTWF0aElkZW50aWZpZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzTWF0aElkZW50aWZpZXIpOyB9DQorICAgIGJvb2wgaXNNYXRoVGFibGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRh
YmxlKTsgfQ0KKyAgICBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhUYWJsZVJvdyk7IH0N
CisgICAgYm9vbCBpc01hdGhUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRhYmxlQ2VsbCk7IH0NCisgICAg
Ym9vbCBpc01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoTXVsdGlzY3JpcHQpOyB9DQorICAgIGJv
b2wgaXNNYXRoVG9rZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRva2VuKTsgfQ0KICAgICBib29sIGlzTWF0aFNjcmlw
dE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9DQogICAgIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNj
ZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9DQogDQotICAgIEFYQ29yZU9iamVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQ0KLSAgICBBWENvcmVPYmplY3QqIG1hdGhSb290
SW5kZXhPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9DQorICAgIEFYQ29yZU9i
amVjdCogbWF0aFJhZGljYW5kT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhSYWRpY2FuZE9iamVjdCk7IH0NCisgICAgQVhD
b3JlT2JqZWN0KiBtYXRoUm9vdEluZGV4T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhSb290SW5kZXhPYmplY3QpOyB9DQog
DQotICAgIEFYQ29yZU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQ0KLSAgICBBWENvcmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQ0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhVbmRlck9iamVjdCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpN
YXRoVW5kZXJPYmplY3QpOyB9DQorICAgIEFYQ29yZU9iamVjdCogbWF0aE92ZXJPYmplY3QoKSBv
dmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0
aE92ZXJPYmplY3QpOyB9DQogDQotICAgIEFYQ29yZU9iamVjdCogbWF0aE51bWVyYXRvck9iamVj
dCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0NCi0gICAgQVhDb3JlT2JqZWN0KiBtYXRo
RGVub21pbmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9DQorICAgIEFY
Q29yZU9iamVjdCogbWF0aE51bWVyYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVj
dEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoTnVtZXJhdG9yT2JqZWN0KTsgfQ0K
KyAgICBBWENvcmVPYmplY3QqIG1hdGhEZW5vbWluYXRvck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0
dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoRGVub21pbmF0b3JP
YmplY3QpOyB9DQogDQotICAgIEFYQ29yZU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9DQotICAgIEFYQ29yZU9iamVjdCogbWF0aFN1YnNjcmlwdE9i
amVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0NCi0gICAgQVhDb3JlT2JqZWN0KiBt
YXRoU3VwZXJzY3JpcHRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9DQorICAg
IEFYQ29yZU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aEJhc2VPYmplY3QpOyB9DQorICAgIEFY
Q29yZU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVj
dEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoU3Vic2NyaXB0T2JqZWN0KTsgfQ0K
KyAgICBBWENvcmVPYmplY3QqIG1hdGhTdXBlcnNjcmlwdE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0
dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoU3VwZXJzY3JpcHRP
YmplY3QpOyB9DQogDQotICAgIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9DQotICAgIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VT
dHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQ0KLSAgICBpbnQgbWF0
aExpbmVUaGlja25lc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9DQotICAgIGJvb2wg
aXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQ0KKyAgICBTdHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aEZlbmNlZE9wZW5T
dHJpbmcpOyB9DQorICAgIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aEZl
bmNlZENsb3NlU3RyaW5nKTsgfQ0KKyAgICBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aExp
bmVUaGlja25lc3MpOyB9DQorICAgIGJvb2wgaXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
QW5vbnltb3VzTWF0aE9wZXJhdG9yKTsgfQ0KIA0KICAgICB2b2lkIG1hdGhQcmVzY3JpcHRzKEFj
Y2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpIG92ZXJyaWRlIHsgfQ0KICAgICB2b2lk
IG1hdGhQb3N0c2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSBvdmVy
cmlkZSB7IH0NCkBAIC02MzksMTggKzYzOSw1MSBAQCBwcml2YXRlOg0KIA0KICAgICBlbnVtIGNs
YXNzIEFYUHJvcGVydHlOYW1lIDogdWludDhfdCB7DQogICAgICAgICBOb25lID0gMCwNCisgICAg
ICAgIERlc2NyaXB0aW9uLA0KICAgICAgICAgSGVscFRleHQsDQogICAgICAgICBJc0FjY2Vzc2li
aWxpdHlJZ25vcmVkLA0KKyAgICAgICAgSXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IsDQogICAgICAg
ICBJc0F0dGFjaG1lbnQsDQogICAgICAgICBJc0ZpbGVVcGxvYWRCdXR0b24sDQogICAgICAgICBJ
c0ltYWdlLA0KICAgICAgICAgSXNJbWFnZU1hcExpbmssDQogICAgICAgICBJc0xpbmssDQorICAg
ICAgICBJc01hdGhFbGVtZW50LA0KKyAgICAgICAgSXNNYXRoRnJhY3Rpb24sDQorICAgICAgICBJ
c01hdGhGZW5jZWQsDQorICAgICAgICBJc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCwNCisgICAg
ICAgIElzTWF0aFJvdywNCisgICAgICAgIElzTWF0aFVuZGVyT3ZlciwNCisgICAgICAgIElzTWF0
aFJvb3QsDQorICAgICAgICBJc01hdGhTcXVhcmVSb290LA0KKyAgICAgICAgSXNNYXRoVGV4dCwN
CisgICAgICAgIElzTWF0aE51bWJlciwNCisgICAgICAgIElzTWF0aE9wZXJhdG9yLA0KKyAgICAg
ICAgSXNNYXRoRmVuY2VPcGVyYXRvciwNCisgICAgICAgIElzTWF0aFNlcGFyYXRvck9wZXJhdG9y
LA0KKyAgICAgICAgSXNNYXRoSWRlbnRpZmllciwNCisgICAgICAgIElzTWF0aFRhYmxlLA0KKyAg
ICAgICAgSXNNYXRoVGFibGVSb3csDQorICAgICAgICBJc01hdGhUYWJsZUNlbGwsDQorICAgICAg
ICBJc01hdGhNdWx0aXNjcmlwdCwNCisgICAgICAgIElzTWF0aFRva2VuLA0KKyAgICAgICAgSXNN
YXRoU2NyaXB0T2JqZWN0LA0KICAgICAgICAgSXNNZWRpYUNvbnRyb2xMYWJlbCwNCiAgICAgICAg
IElzU2Nyb2xsYmFyLA0KICAgICAgICAgSXNUcmVlLA0KICAgICAgICAgSXNUcmVlSXRlbSwNCi0g
ICAgICAgIERlc2NyaXB0aW9uLA0KKyAgICAgICAgTWF0aEZlbmNlZE9wZW5TdHJpbmcsDQorICAg
ICAgICBNYXRoRmVuY2VkQ2xvc2VTdHJpbmcsDQorICAgICAgICBNYXRoTGluZVRoaWNrbmVzcywN
CisgICAgICAgIE1hdGhSYWRpY2FuZE9iamVjdCwNCisgICAgICAgIE1hdGhSb290SW5kZXhPYmpl
Y3QsDQorICAgICAgICBNYXRoVW5kZXJPYmplY3QsDQorICAgICAgICBNYXRoT3Zlck9iamVjdCwN
CisgICAgICAgIE1hdGhOdW1lcmF0b3JPYmplY3QsDQorICAgICAgICBNYXRoRGVub21pbmF0b3JP
YmplY3QsDQorICAgICAgICBNYXRoQmFzZU9iamVjdCwNCisgICAgICAgIE1hdGhTdWJzY3JpcHRP
YmplY3QsDQorICAgICAgICBNYXRoU3VwZXJzY3JpcHRPYmplY3QsDQogICAgICAgICBSZWxhdGl2
ZUZyYW1lLA0KICAgICAgICAgUm9sZVZhbHVlLA0KICAgICAgICAgUm9sZVBsYXRmb3JtU3RyaW5n
LA0KQEAgLTY2NiwxOCArNjk5LDIwIEBAIHByaXZhdGU6DQogICAgIEFYSXNvbGF0ZWRUcmVlKiB0
cmVlKCkgY29uc3Q7DQogDQogICAgIEFYSXNvbGF0ZWRPYmplY3QoKSA9IGRlZmF1bHQ7DQotICAg
IEFYSXNvbGF0ZWRPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0Jik7DQotICAgIHZvaWQgaW5pdGlh
bGl6ZUF0dHJpYnV0ZURhdGEoY29uc3QgQVhDb3JlT2JqZWN0Jik7DQorICAgIEFYSXNvbGF0ZWRP
YmplY3QoQVhDb3JlT2JqZWN0Jik7DQorICAgIHZvaWQgaW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEo
QVhDb3JlT2JqZWN0Jik7DQogDQotICAgIHVzaW5nIEF0dHJpYnV0ZVZhbHVlVmFyaWFudCA9IFZh
cmlhbnQ8c3RkOjpudWxscHRyX3QsIFN0cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91Ymxl
LCBPcHRpb25hbDxGbG9hdFJlY3Q+PjsNCisgICAgdXNpbmcgQXR0cmlidXRlVmFsdWVWYXJpYW50
ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU3RyaW5nLCBib29sLCBpbnQsIHVuc2lnbmVkLCBk
b3VibGUsIE9wdGlvbmFsPEZsb2F0UmVjdD4sIEFYSUQ+Ow0KICAgICB2b2lkIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lLCBBdHRyaWJ1dGVWYWx1ZVZhcmlhbnQmJiwgYm9vbCBzaG91bGRSZW1v
dmUgPSBmYWxzZSk7DQotDQorICAgIHZvaWQgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWUsIEFYQ29yZU9iamVjdCopOw0KKyAgICANCiAgICAgYm9vbCBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWUpIGNvbnN0Ow0KICAgICBjb25zdCBTdHJpbmcgc3RyaW5nQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0Ow0KICAgICBpbnQgaW50QXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWUpIGNvbnN0Ow0KICAgICB1bnNpZ25lZCB1bnNpZ25lZEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsNCiAgICAgZG91YmxlIGRvdWJsZUF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsNCiAgICAgRmxvYXRSZWN0IHJlY3RBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZSkgY29uc3Q7DQorICAgIEFYQ29yZU9iamVjdCogb2JqZWN0QXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0Ow0KIA0KICAgICBBWElEIG1fcGFyZW50
Ow0KICAgICBBWElEIG1faWQ7DQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383239</attachid>
            <date>2019-11-10 00:12:28 -0800</date>
            <delta_ts>2019-11-13 16:27:31 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_204056.txt</filename>
            <type>text/plain</type>
            <size>16035</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZw0KaW5kZXggYjVjY2ZhZjMzOTYuLmI5Y2E0MzRjMWZmIDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCkBA
IC0xLDMgKzEsMjIgQEANCisyMDE5LTExLTEwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBh
cHBsZS5jb20+DQorDQorICAgICAgICBBWDogSW1wbGVtZW50IGlzb2xhdGVkIHRyZWUgc3VwcG9y
dCBmb3IgbWF0aCBvYmplY3RzDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA0MDU2DQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcwNTQ2NDQ+DQor
DQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgIEltcGxl
bWVudCBpc29sYXRlZCB0cmVlIHN1cHBvcnQgZm9yIG1hdGggb2JqZWN0cy4NCisgICAgICAgIEFk
ZCBhIG1ldGhvZCBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyBvYmplY3RzLg0KKw0KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOg0KKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OkFYSXNvbGF0ZWRPYmplY3QpOg0KKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSk6DQorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOg0KKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNldE9iamVjdFByb3BlcnR5KToNCisgICAg
ICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpvYmplY3RBdHRyaWJ1dGVWYWx1ZSBjb25z
dCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
Tm9kZS5oOg0KKw0KIDIwMTktMTEtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4N
CiANCiAgICAgICAgIEFkZCBiYWNrL2ZvcndhcmQgY2FjaGUgcXVpcmsgZm9yIFZpbWVvLmNvbQ0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwDQppbmRleCA4YjU1NGY5OThiMi4uMDJlMTky
ZmNmOGIgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwDQpAQCAtMzQsNyArMzQs
NyBAQCBleHRlcm4gIkMiIGJvb2wgX0FYVUlFbGVtZW50UmVxdWVzdFNlcnZpY2VkQnlTZWNvbmRh
cnlBWFRocmVhZCh2b2lkKTsNCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotQVhJc29sYXRl
ZE9iamVjdDo6QVhJc29sYXRlZE9iamVjdChjb25zdCBBWENvcmVPYmplY3QmIG9iamVjdCkNCitB
WElzb2xhdGVkT2JqZWN0OjpBWElzb2xhdGVkT2JqZWN0KEFYQ29yZU9iamVjdCYgb2JqZWN0KQ0K
ICAgICA6IG1faWQob2JqZWN0Lm9iamVjdElEKCkpDQogew0KICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOw0KQEAgLTQ0LDE0ICs0NCwxNCBAQCBBWElzb2xhdGVkT2JqZWN0OjpBWElzb2xhdGVk
T2JqZWN0KGNvbnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0KQ0KICNlbmRpZg0KIH0NCiANCi1SZWY8
QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKGNvbnN0IEFYQ29yZU9i
amVjdCYgb2JqZWN0KQ0KK1JlZjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkT2JqZWN0Ojpj
cmVhdGUoQVhDb3JlT2JqZWN0JiBvYmplY3QpDQogew0KICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBWElzb2xhdGVkT2JqZWN0KG9iamVjdCkpOw0KIH0NCiANCiBBWElzb2xhdGVkT2JqZWN0Ojp+
QVhJc29sYXRlZE9iamVjdCgpID0gZGVmYXVsdDsNCiANCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6
OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKGNvbnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0KQ0KK3Zv
aWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3JlT2JqZWN0
JiBvYmplY3QpDQogew0KICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Um9sZVZhbHVl
LCBzdGF0aWNfY2FzdDxpbnQ+KG9iamVjdC5yb2xlVmFsdWUoKSkpOw0KICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6Um9sZVBsYXRmb3JtU3RyaW5nLCBvYmplY3Qucm9sZVBsYXRmb3Jt
U3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCkpOw0KQEAgLTcxLDYgKzcxLDQ5IEBAIHZvaWQgQVhJc29s
YXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoY29uc3QgQVhDb3JlT2JqZWN0JiBv
YmplY3QpDQogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpUaXRsZSwgb2JqZWN0LnRp
dGxlQXR0cmlidXRlVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7DQogICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpEZXNjcmlwdGlvbiwgb2JqZWN0LmRlc2NyaXB0aW9uQXR0cmlidXRlVmFs
dWUoKS5pc29sYXRlZENvcHkoKSk7DQogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpI
ZWxwVGV4dCwgb2JqZWN0LmhlbHBUZXh0QXR0cmlidXRlVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7
DQorICAgIA0KKyAgICBpZiAoYm9vbCBpc01hdGhFbGVtZW50ID0gb2JqZWN0LmlzTWF0aEVsZW1l
bnQoKSkgew0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEVsZW1l
bnQsIGlzTWF0aEVsZW1lbnQpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OklzQW5vbnltb3VzTWF0aE9wZXJhdG9yLCBvYmplY3QuaXNBbm9ueW1vdXNNYXRoT3BlcmF0b3Io
KSk7DQorICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoRnJhY3Rpb24s
IG9iamVjdC5pc01hdGhGcmFjdGlvbigpKTsNCisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpJc01hdGhGZW5jZWQsIG9iamVjdC5pc01hdGhGZW5jZWQoKSk7DQorICAgICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQsIG9i
amVjdC5pc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpKTsNCisgICAgICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpJc01hdGhSb3csIG9iamVjdC5pc01hdGhSb3coKSk7DQorICAgICAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVW5kZXJPdmVyLCBvYmplY3QuaXNN
YXRoVW5kZXJPdmVyKCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Oklz
TWF0aFJvb3QsIG9iamVjdC5pc01hdGhSb290KCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OklzTWF0aFNxdWFyZVJvb3QsIG9iamVjdC5pc01hdGhTcXVhcmVSb290KCkp
Ow0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRleHQsIG9iamVj
dC5pc01hdGhUZXh0KCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Oklz
TWF0aE51bWJlciwgb2JqZWN0LmlzTWF0aE51bWJlcigpKTsNCisgICAgICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpJc01hdGhPcGVyYXRvciwgb2JqZWN0LmlzTWF0aE9wZXJhdG9yKCkp
Ow0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEZlbmNlT3BlcmF0
b3IsIG9iamVjdC5pc01hdGhGZW5jZU9wZXJhdG9yKCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OklzTWF0aFNlcGFyYXRvck9wZXJhdG9yLCBvYmplY3QuaXNNYXRoU2Vw
YXJhdG9yT3BlcmF0b3IoKSk7DQorICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
SXNNYXRoSWRlbnRpZmllciwgb2JqZWN0LmlzTWF0aElkZW50aWZpZXIoKSk7DQorICAgICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVGFibGUsIG9iamVjdC5pc01hdGhUYWJs
ZSgpKTsNCisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01hdGhUYWJsZVJv
dywgb2JqZWN0LmlzTWF0aFRhYmxlUm93KCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OklzTWF0aFRhYmxlQ2VsbCwgb2JqZWN0LmlzTWF0aFRhYmxlQ2VsbCgpKTsNCisg
ICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01hdGhNdWx0aXNjcmlwdCwgb2Jq
ZWN0LmlzTWF0aE11bHRpc2NyaXB0KCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OklzTWF0aFRva2VuLCBvYmplY3QuaXNNYXRoVG9rZW4oKSk7DQorICAgICAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aEZlbmNlZE9wZW5TdHJpbmcsIG9iamVjdC5tYXRo
RmVuY2VkT3BlblN0cmluZygpKTsNCisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpNYXRoRmVuY2VkQ2xvc2VTdHJpbmcsIG9iamVjdC5tYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSk7
DQorICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aExpbmVUaGlja25lc3Ms
IG9iamVjdC5tYXRoTGluZVRoaWNrbmVzcygpKTvDpcOfDQorICAgICAgICBzZXRPYmplY3RQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aFJhZGljYW5kT2JqZWN0LCBvYmplY3QubWF0aFJhZGlj
YW5kT2JqZWN0KCkpOw0KKyAgICAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
Ok1hdGhSb290SW5kZXhPYmplY3QsIG9iamVjdC5tYXRoUm9vdEluZGV4T2JqZWN0KCkpOw0KKyAg
ICAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhVbmRlck9iamVjdCwg
b2JqZWN0Lm1hdGhVbmRlck9iamVjdCgpKTsNCisgICAgICAgIHNldE9iamVjdFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpNYXRoT3Zlck9iamVjdCwgb2JqZWN0Lm1hdGhPdmVyT2JqZWN0KCkpOw0K
KyAgICAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhOdW1lcmF0b3JP
YmplY3QsIG9iamVjdC5tYXRoTnVtZXJhdG9yT2JqZWN0KCkpOw0KKyAgICAgICAgc2V0T2JqZWN0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhEZW5vbWluYXRvck9iamVjdCwgb2JqZWN0Lm1h
dGhEZW5vbWluYXRvck9iamVjdCgpKTsNCisgICAgICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpNYXRoQmFzZU9iamVjdCwgb2JqZWN0Lm1hdGhCYXNlT2JqZWN0KCkpOw0KKyAg
ICAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhTdWJzY3JpcHRPYmpl
Y3QsIG9iamVjdC5tYXRoU3Vic2NyaXB0T2JqZWN0KCkpOw0KKyAgICAgICAgc2V0T2JqZWN0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhTdXBlcnNjcmlwdE9iamVjdCwgb2JqZWN0Lm1hdGhT
dXBlcnNjcmlwdE9iamVjdCgpKTsNCisgICAgfQ0KK30NCisNCit2b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OnNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQVhDb3Jl
T2JqZWN0KiBvYmplY3QpDQorew0KKyAgICBpZiAob2JqZWN0KQ0KKyAgICAgICAgc2V0UHJvcGVy
dHkocHJvcGVydHlOYW1lLCBvYmplY3QtPm9iamVjdElEKCkpOw0KKyAgICBlbHNlDQorICAgICAg
ICBzZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG51bGxwdHIsIHRydWUpOw0KIH0NCiANCiB2b2lk
IEFYSXNvbGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgQXR0cmlidXRlVmFsdWVWYXJpYW50JiYgdmFsdWUsIGJvb2wgc2hvdWxkUmVtb3ZlKQ0KQEAg
LTE0NSw2ICsxODgsMjIgQEAgQVhJc29sYXRlZFRyZWUqIEFYSXNvbGF0ZWRPYmplY3Q6OnRyZWUo
KSBjb25zdA0KICAgICByZXR1cm4gbV9jYWNoZWRUcmVlLmdldCgpOw0KIH0NCiANCitBWENvcmVP
YmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6Om9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgY29uc3QNCit7DQorICAgIGF1dG8gdmFsdWUgPSBtX2F0dHJpYnV0
ZU1hcC5nZXQocHJvcGVydHlOYW1lKTsNCisgICAgQVhJRCBub2RlSUQgPSBXVEY6OnN3aXRjaE9u
KHZhbHVlLA0KKyAgICAgICAgWyZdIChPcHRpb25hbDxBWElEPiB0eXBlZFZhbHVlKSB7DQorICAg
ICAgICAgICAgaWYgKCF0eXBlZFZhbHVlKQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gSW52YWxp
ZEFYSUQ7DQorICAgICAgICByZXR1cm4gdHlwZWRWYWx1ZS52YWx1ZSgpOw0KKyAgICAgICAgfSwN
CisgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gSW52YWxpZEFYSUQ7IH0NCisgICAgKTsNCisg
ICAgDQorICAgIHJldHVybiB0cmVlKCktPm5vZGVGb3JJRChub2RlSUQpLmdldCgpOw0KK30NCisN
CisNCiBGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QNCiB7DQogICAgIGF1dG8gdmFsdWUgPSBtX2F0
dHJpYnV0ZU1hcC5nZXQocHJvcGVydHlOYW1lKTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5o
DQppbmRleCBmOWE3NmE1NDA3Yy4uYjJiZTY0NTRmZTcgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaA0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWVOb2RlLmgNCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEFYSXNvbGF0ZWRUcmVlOw0KIA0KIGNs
YXNzIEFYSXNvbGF0ZWRPYmplY3QgZmluYWwgOiBwdWJsaWMgQVhDb3JlT2JqZWN0IHsNCiBwdWJs
aWM6DQotICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZE9iamVjdD4gY3JlYXRlKGNvbnN0IEFYQ29y
ZU9iamVjdCYpOw0KKyAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZShBWENv
cmVPYmplY3QmKTsNCiAgICAgfkFYSXNvbGF0ZWRPYmplY3QoKTsNCiANCiAgICAgdm9pZCBzZXRP
YmplY3RJRChBWElEIGlkKSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQ0KQEAgLTU1MCw0NSArNTUw
LDQ1IEBAIHByaXZhdGU6DQogDQogICAgIHZvaWQgbm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2Vk
KCkgb3ZlcnJpZGUgeyB9DQogDQotICAgIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNNYXRoRnJhY3Rpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBib29sIGlzTWF0aEZlbmNlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3Vw
ZXJzY3JpcHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBib29sIGlz
TWF0aFJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNN
YXRoVW5kZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9v
bCBpc01hdGhSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9v
bCBpc01hdGhTcXVhcmVSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0g
ICAgYm9vbCBpc01hdGhUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0g
ICAgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0K
LSAgICBib29sIGlzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0NCi0gICAgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0NCi0gICAgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNNYXRoSWRlbnRpZmllcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNNYXRoVGFibGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBib29sIGlzTWF0aFRhYmxlUm93
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9vbCBpc01hdGhUYWJs
ZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBib29sIGlzTWF0
aE11bHRpc2NyaXB0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9v
bCBpc01hdGhUb2tlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQorICAgIGJv
b2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoRWxlbWVudCk7IH0NCisgICAgYm9vbCBpc01hdGhG
cmFjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6SXNNYXRoRnJhY3Rpb24pOyB9DQorICAgIGJvb2wgaXNNYXRoRmVuY2VkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc01hdGhGZW5jZWQpOyB9DQorICAgIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OklzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KTsgfQ0KKyAgICBib29sIGlzTWF0aFJvdygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNNYXRoUm93KTsgfQ0KKyAgICBib29sIGlzTWF0aFVuZGVyT3ZlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVW5k
ZXJPdmVyKTsgfQ0KKyAgICBib29sIGlzTWF0aFJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFJvb3QpOyB9DQorICAg
IGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoU3F1YXJlUm9vdCk7IH0NCisgICAgYm9v
bCBpc01hdGhUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpJc01hdGhUZXh0KTsgfQ0KKyAgICBib29sIGlzTWF0aE51bWJlcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNNYXRoTnVtYmVyKTsgfQ0KKyAgICBib29sIGlzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhP
cGVyYXRvcik7IH0NCisgICAgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhGZW5j
ZU9wZXJhdG9yKTsgfQ0KKyAgICBib29sIGlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01h
dGhTZXBhcmF0b3JPcGVyYXRvcik7IH0NCisgICAgYm9vbCBpc01hdGhJZGVudGlmaWVyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJ
c01hdGhJZGVudGlmaWVyKTsgfQ0KKyAgICBib29sIGlzTWF0aFRhYmxlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhUYWJs
ZSk7IH0NCisgICAgYm9vbCBpc01hdGhUYWJsZVJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVGFibGVSb3cpOyB9DQor
ICAgIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhUYWJsZUNlbGwpOyB9DQorICAgIGJv
b2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aE11bHRpc2NyaXB0KTsgfQ0KKyAgICBib29s
IGlzTWF0aFRva2VuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpJc01hdGhUb2tlbik7IH0NCiAgICAgYm9vbCBpc01hdGhTY3JpcHRP
YmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQ0KICAgICBib29sIGlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vz
c2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQ0KIA0KLSAgICBBWENvcmVPYmplY3QqIG1hdGhSYWRpY2FuZE9iamVjdCgpIG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0NCi0gICAgQVhDb3JlT2JqZWN0KiBtYXRoUm9vdElu
ZGV4T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQ0KKyAgICBBWENvcmVPYmpl
Y3QqIG1hdGhSYWRpY2FuZE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoUmFkaWNhbmRPYmplY3QpOyB9DQorICAgIEFYQ29y
ZU9iamVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoUm9vdEluZGV4T2JqZWN0KTsgfQ0KIA0K
LSAgICBBWENvcmVPYmplY3QqIG1hdGhVbmRlck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0NCi0gICAgQVhDb3JlT2JqZWN0KiBtYXRoT3Zlck9iamVjdCgpIG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0NCisgICAgQVhDb3JlT2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKSBv
dmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0
aFVuZGVyT2JqZWN0KTsgfQ0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgb3Zl
cnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhP
dmVyT2JqZWN0KTsgfQ0KIA0KLSAgICBBWENvcmVPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3Qo
KSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9DQotICAgIEFYQ29yZU9iamVjdCogbWF0aERl
bm9taW5hdG9yT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQ0KKyAgICBBWENv
cmVPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aE51bWVyYXRvck9iamVjdCk7IH0NCisg
ICAgQVhDb3JlT2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVy
biBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aERlbm9taW5hdG9yT2Jq
ZWN0KTsgfQ0KIA0KLSAgICBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGUg
eyByZXR1cm4gbnVsbHB0cjsgfQ0KLSAgICBBWENvcmVPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmpl
Y3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9DQotICAgIEFYQ29yZU9iamVjdCogbWF0
aFN1cGVyc2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQ0KKyAgICBB
WENvcmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhCYXNlT2JqZWN0KTsgfQ0KKyAgICBBWENv
cmVPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aFN1YnNjcmlwdE9iamVjdCk7IH0NCisg
ICAgQVhDb3JlT2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVy
biBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KTsgfQ0KIA0KLSAgICBTdHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQ0KLSAgICBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3Ry
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0NCi0gICAgaW50IG1hdGhM
aW5lVGhpY2tuZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQ0KLSAgICBib29sIGlz
QW5vbnltb3VzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0N
CisgICAgU3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhGZW5jZWRPcGVuU3Ry
aW5nKTsgfQ0KKyAgICBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3RyaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhGZW5j
ZWRDbG9zZVN0cmluZyk7IH0NCisgICAgaW50IG1hdGhMaW5lVGhpY2tuZXNzKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gaW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhMaW5l
VGhpY2tuZXNzKTsgfQ0KKyAgICBib29sIGlzQW5vbnltb3VzTWF0aE9wZXJhdG9yKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0Fu
b255bW91c01hdGhPcGVyYXRvcik7IH0NCiANCiAgICAgdm9pZCBtYXRoUHJlc2NyaXB0cyhBY2Nl
c3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSBvdmVycmlkZSB7IH0NCiAgICAgdm9pZCBt
YXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3ZlcnJp
ZGUgeyB9DQpAQCAtNjM5LDE4ICs2MzksNTEgQEAgcHJpdmF0ZToNCiANCiAgICAgZW51bSBjbGFz
cyBBWFByb3BlcnR5TmFtZSA6IHVpbnQ4X3Qgew0KICAgICAgICAgTm9uZSA9IDAsDQorICAgICAg
ICBEZXNjcmlwdGlvbiwNCiAgICAgICAgIEhlbHBUZXh0LA0KICAgICAgICAgSXNBY2Nlc3NpYmls
aXR5SWdub3JlZCwNCisgICAgICAgIElzQW5vbnltb3VzTWF0aE9wZXJhdG9yLA0KICAgICAgICAg
SXNBdHRhY2htZW50LA0KICAgICAgICAgSXNGaWxlVXBsb2FkQnV0dG9uLA0KICAgICAgICAgSXNJ
bWFnZSwNCiAgICAgICAgIElzSW1hZ2VNYXBMaW5rLA0KICAgICAgICAgSXNMaW5rLA0KKyAgICAg
ICAgSXNNYXRoRWxlbWVudCwNCisgICAgICAgIElzTWF0aEZyYWN0aW9uLA0KKyAgICAgICAgSXNN
YXRoRmVuY2VkLA0KKyAgICAgICAgSXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQsDQorICAgICAg
ICBJc01hdGhSb3csDQorICAgICAgICBJc01hdGhVbmRlck92ZXIsDQorICAgICAgICBJc01hdGhS
b290LA0KKyAgICAgICAgSXNNYXRoU3F1YXJlUm9vdCwNCisgICAgICAgIElzTWF0aFRleHQsDQor
ICAgICAgICBJc01hdGhOdW1iZXIsDQorICAgICAgICBJc01hdGhPcGVyYXRvciwNCisgICAgICAg
IElzTWF0aEZlbmNlT3BlcmF0b3IsDQorICAgICAgICBJc01hdGhTZXBhcmF0b3JPcGVyYXRvciwN
CisgICAgICAgIElzTWF0aElkZW50aWZpZXIsDQorICAgICAgICBJc01hdGhUYWJsZSwNCisgICAg
ICAgIElzTWF0aFRhYmxlUm93LA0KKyAgICAgICAgSXNNYXRoVGFibGVDZWxsLA0KKyAgICAgICAg
SXNNYXRoTXVsdGlzY3JpcHQsDQorICAgICAgICBJc01hdGhUb2tlbiwNCisgICAgICAgIElzTWF0
aFNjcmlwdE9iamVjdCwNCiAgICAgICAgIElzTWVkaWFDb250cm9sTGFiZWwsDQogICAgICAgICBJ
c1Njcm9sbGJhciwNCiAgICAgICAgIElzVHJlZSwNCiAgICAgICAgIElzVHJlZUl0ZW0sDQotICAg
ICAgICBEZXNjcmlwdGlvbiwNCisgICAgICAgIE1hdGhGZW5jZWRPcGVuU3RyaW5nLA0KKyAgICAg
ICAgTWF0aEZlbmNlZENsb3NlU3RyaW5nLA0KKyAgICAgICAgTWF0aExpbmVUaGlja25lc3MsDQor
ICAgICAgICBNYXRoUmFkaWNhbmRPYmplY3QsDQorICAgICAgICBNYXRoUm9vdEluZGV4T2JqZWN0
LA0KKyAgICAgICAgTWF0aFVuZGVyT2JqZWN0LA0KKyAgICAgICAgTWF0aE92ZXJPYmplY3QsDQor
ICAgICAgICBNYXRoTnVtZXJhdG9yT2JqZWN0LA0KKyAgICAgICAgTWF0aERlbm9taW5hdG9yT2Jq
ZWN0LA0KKyAgICAgICAgTWF0aEJhc2VPYmplY3QsDQorICAgICAgICBNYXRoU3Vic2NyaXB0T2Jq
ZWN0LA0KKyAgICAgICAgTWF0aFN1cGVyc2NyaXB0T2JqZWN0LA0KICAgICAgICAgUmVsYXRpdmVG
cmFtZSwNCiAgICAgICAgIFJvbGVWYWx1ZSwNCiAgICAgICAgIFJvbGVQbGF0Zm9ybVN0cmluZywN
CkBAIC02NjYsMTggKzY5OSwyMCBAQCBwcml2YXRlOg0KICAgICBBWElzb2xhdGVkVHJlZSogdHJl
ZSgpIGNvbnN0Ow0KIA0KICAgICBBWElzb2xhdGVkT2JqZWN0KCkgPSBkZWZhdWx0Ow0KLSAgICBB
WElzb2xhdGVkT2JqZWN0KGNvbnN0IEFYQ29yZU9iamVjdCYpOw0KLSAgICB2b2lkIGluaXRpYWxp
emVBdHRyaWJ1dGVEYXRhKGNvbnN0IEFYQ29yZU9iamVjdCYpOw0KKyAgICBBWElzb2xhdGVkT2Jq
ZWN0KEFYQ29yZU9iamVjdCYpOw0KKyAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFY
Q29yZU9iamVjdCYpOw0KIA0KLSAgICB1c2luZyBBdHRyaWJ1dGVWYWx1ZVZhcmlhbnQgPSBWYXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJsZSwg
T3B0aW9uYWw8RmxvYXRSZWN0Pj47DQorICAgIHVzaW5nIEF0dHJpYnV0ZVZhbHVlVmFyaWFudCA9
IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFN0cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91
YmxlLCBPcHRpb25hbDxGbG9hdFJlY3Q+LCBBWElEPjsNCiAgICAgdm9pZCBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZSwgQXR0cmlidXRlVmFsdWVWYXJpYW50JiYsIGJvb2wgc2hvdWxkUmVtb3Zl
ID0gZmFsc2UpOw0KLQ0KKyAgICB2b2lkIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
LCBBWENvcmVPYmplY3QqKTsNCisgICAgDQogICAgIGJvb2wgYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lKSBjb25zdDsNCiAgICAgY29uc3QgU3RyaW5nIHN0cmluZ0F0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsNCiAgICAgaW50IGludEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lKSBjb25zdDsNCiAgICAgdW5zaWduZWQgdW5zaWduZWRBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZSkgY29uc3Q7DQogICAgIGRvdWJsZSBkb3VibGVBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZSkgY29uc3Q7DQogICAgIEZsb2F0UmVjdCByZWN0QXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0Ow0KKyAgICBBWENvcmVPYmplY3QqIG9iamVjdEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsNCiANCiAgICAgQVhJRCBtX3BhcmVudDsN
CiAgICAgQVhJRCBtX2lkOw0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383513</attachid>
            <date>2019-11-13 16:27:31 -0800</date>
            <delta_ts>2019-11-14 07:28:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>file_204056.txt</filename>
            <type>text/plain</type>
            <size>16027</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZw0KaW5kZXggODIzMDI4NDAwZjYuLjFiYzUyNjBjMDY3IDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nDQorKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cNCkBA
IC0xLDMgKzEsMjIgQEANCisyMDE5LTExLTEzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBh
cHBsZS5jb20+DQorDQorICAgICAgICBBWDogSW1wbGVtZW50IGlzb2xhdGVkIHRyZWUgc3VwcG9y
dCBmb3IgbWF0aCBvYmplY3RzDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA0MDU2DQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTcwNTQ2NDQ+DQor
DQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgIEltcGxl
bWVudCBpc29sYXRlZCB0cmVlIHN1cHBvcnQgZm9yIG1hdGggb2JqZWN0cy4NCisgICAgICAgIEFk
ZCBhIG1ldGhvZCBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyBvYmplY3RzLg0KKw0KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOg0KKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OkFYSXNvbGF0ZWRPYmplY3QpOg0KKyAg
ICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZSk6DQorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOg0KKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNldE9iamVjdFByb3BlcnR5KToNCisgICAg
ICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpvYmplY3RBdHRyaWJ1dGVWYWx1ZSBjb25z
dCk6DQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
Tm9kZS5oOg0KKw0KIDIwMTktMTEtMTMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPg0KIA0KICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1MjQwMi4NCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcA0KaW5kZXggOGI1NTRmOTk4YjIuLjA5OTEzYjU3
YTEyIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcA0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcA0KQEAgLTM0LDcgKzM0LDcg
QEAgZXh0ZXJuICJDIiBib29sIF9BWFVJRWxlbWVudFJlcXVlc3RTZXJ2aWNlZEJ5U2Vjb25kYXJ5
QVhUaHJlYWQodm9pZCk7DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLUFYSXNvbGF0ZWRP
YmplY3Q6OkFYSXNvbGF0ZWRPYmplY3QoY29uc3QgQVhDb3JlT2JqZWN0JiBvYmplY3QpDQorQVhJ
c29sYXRlZE9iamVjdDo6QVhJc29sYXRlZE9iamVjdChBWENvcmVPYmplY3QmIG9iamVjdCkNCiAg
ICAgOiBtX2lkKG9iamVjdC5vYmplY3RJRCgpKQ0KIHsNCiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsNCkBAIC00NCwxNCArNDQsMTQgQEAgQVhJc29sYXRlZE9iamVjdDo6QVhJc29sYXRlZE9i
amVjdChjb25zdCBBWENvcmVPYmplY3QmIG9iamVjdCkNCiAjZW5kaWYNCiB9DQogDQotUmVmPEFY
SXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZShjb25zdCBBWENvcmVPYmpl
Y3QmIG9iamVjdCkNCitSZWY8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZE9iamVjdDo6Y3Jl
YXRlKEFYQ29yZU9iamVjdCYgb2JqZWN0KQ0KIHsNCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QVhJc29sYXRlZE9iamVjdChvYmplY3QpKTsNCiB9DQogDQogQVhJc29sYXRlZE9iamVjdDo6fkFY
SXNvbGF0ZWRPYmplY3QoKSA9IGRlZmF1bHQ7DQogDQotdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplQXR0cmlidXRlRGF0YShjb25zdCBBWENvcmVPYmplY3QmIG9iamVjdCkNCit2b2lk
IEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYg
b2JqZWN0KQ0KIHsNCiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJvbGVWYWx1ZSwg
c3RhdGljX2Nhc3Q8aW50PihvYmplY3Qucm9sZVZhbHVlKCkpKTsNCiAgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OlJvbGVQbGF0Zm9ybVN0cmluZywgb2JqZWN0LnJvbGVQbGF0Zm9ybVN0
cmluZygpLmlzb2xhdGVkQ29weSgpKTsNCkBAIC03MSw2ICs3MSw0OSBAQCB2b2lkIEFYSXNvbGF0
ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKGNvbnN0IEFYQ29yZU9iamVjdCYgb2Jq
ZWN0KQ0KICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VGl0bGUsIG9iamVjdC50aXRs
ZUF0dHJpYnV0ZVZhbHVlKCkuaXNvbGF0ZWRDb3B5KCkpOw0KICAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6RGVzY3JpcHRpb24sIG9iamVjdC5kZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVl
KCkuaXNvbGF0ZWRDb3B5KCkpOw0KICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGVs
cFRleHQsIG9iamVjdC5oZWxwVGV4dEF0dHJpYnV0ZVZhbHVlKCkuaXNvbGF0ZWRDb3B5KCkpOw0K
Kw0KKyAgICBpZiAoYm9vbCBpc01hdGhFbGVtZW50ID0gb2JqZWN0LmlzTWF0aEVsZW1lbnQoKSkg
ew0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEVsZW1lbnQsIGlz
TWF0aEVsZW1lbnQpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzQW5v
bnltb3VzTWF0aE9wZXJhdG9yLCBvYmplY3QuaXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IoKSk7DQor
ICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoRnJhY3Rpb24sIG9iamVj
dC5pc01hdGhGcmFjdGlvbigpKTsNCisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpJc01hdGhGZW5jZWQsIG9iamVjdC5pc01hdGhGZW5jZWQoKSk7DQorICAgICAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQsIG9iamVjdC5p
c01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpKTsNCisgICAgICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpJc01hdGhSb3csIG9iamVjdC5pc01hdGhSb3coKSk7DQorICAgICAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVW5kZXJPdmVyLCBvYmplY3QuaXNNYXRoVW5k
ZXJPdmVyKCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFJv
b3QsIG9iamVjdC5pc01hdGhSb290KCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OklzTWF0aFNxdWFyZVJvb3QsIG9iamVjdC5pc01hdGhTcXVhcmVSb290KCkpOw0KKyAg
ICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFRleHQsIG9iamVjdC5pc01h
dGhUZXh0KCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aE51
bWJlciwgb2JqZWN0LmlzTWF0aE51bWJlcigpKTsNCisgICAgICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpJc01hdGhPcGVyYXRvciwgb2JqZWN0LmlzTWF0aE9wZXJhdG9yKCkpOw0KKyAg
ICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aEZlbmNlT3BlcmF0b3IsIG9i
amVjdC5pc01hdGhGZW5jZU9wZXJhdG9yKCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OklzTWF0aFNlcGFyYXRvck9wZXJhdG9yLCBvYmplY3QuaXNNYXRoU2VwYXJhdG9y
T3BlcmF0b3IoKSk7DQorICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRo
SWRlbnRpZmllciwgb2JqZWN0LmlzTWF0aElkZW50aWZpZXIoKSk7DQorICAgICAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVGFibGUsIG9iamVjdC5pc01hdGhUYWJsZSgpKTsN
CisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01hdGhUYWJsZVJvdywgb2Jq
ZWN0LmlzTWF0aFRhYmxlUm93KCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OklzTWF0aFRhYmxlQ2VsbCwgb2JqZWN0LmlzTWF0aFRhYmxlQ2VsbCgpKTsNCisgICAgICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01hdGhNdWx0aXNjcmlwdCwgb2JqZWN0Lmlz
TWF0aE11bHRpc2NyaXB0KCkpOw0KKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OklzTWF0aFRva2VuLCBvYmplY3QuaXNNYXRoVG9rZW4oKSk7DQorICAgICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6TWF0aEZlbmNlZE9wZW5TdHJpbmcsIG9iamVjdC5tYXRoRmVuY2Vk
T3BlblN0cmluZygpKTsNCisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpNYXRo
RmVuY2VkQ2xvc2VTdHJpbmcsIG9iamVjdC5tYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSk7DQorICAg
ICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF0aExpbmVUaGlja25lc3MsIG9iamVj
dC5tYXRoTGluZVRoaWNrbmVzcygpKTvDpcOfDQorICAgICAgICBzZXRPYmplY3RQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6TWF0aFJhZGljYW5kT2JqZWN0LCBvYmplY3QubWF0aFJhZGljYW5kT2Jq
ZWN0KCkpOw0KKyAgICAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhS
b290SW5kZXhPYmplY3QsIG9iamVjdC5tYXRoUm9vdEluZGV4T2JqZWN0KCkpOw0KKyAgICAgICAg
c2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhVbmRlck9iamVjdCwgb2JqZWN0
Lm1hdGhVbmRlck9iamVjdCgpKTsNCisgICAgICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpNYXRoT3Zlck9iamVjdCwgb2JqZWN0Lm1hdGhPdmVyT2JqZWN0KCkpOw0KKyAgICAg
ICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhOdW1lcmF0b3JPYmplY3Qs
IG9iamVjdC5tYXRoTnVtZXJhdG9yT2JqZWN0KCkpOw0KKyAgICAgICAgc2V0T2JqZWN0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhEZW5vbWluYXRvck9iamVjdCwgb2JqZWN0Lm1hdGhEZW5v
bWluYXRvck9iamVjdCgpKTsNCisgICAgICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpNYXRoQmFzZU9iamVjdCwgb2JqZWN0Lm1hdGhCYXNlT2JqZWN0KCkpOw0KKyAgICAgICAg
c2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhTdWJzY3JpcHRPYmplY3QsIG9i
amVjdC5tYXRoU3Vic2NyaXB0T2JqZWN0KCkpOw0KKyAgICAgICAgc2V0T2JqZWN0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6Ok1hdGhTdXBlcnNjcmlwdE9iamVjdCwgb2JqZWN0Lm1hdGhTdXBlcnNj
cmlwdE9iamVjdCgpKTsNCisgICAgfQ0KK30NCisNCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNl
dE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQVhDb3JlT2JqZWN0
KiBvYmplY3QpDQorew0KKyAgICBpZiAob2JqZWN0KQ0KKyAgICAgICAgc2V0UHJvcGVydHkocHJv
cGVydHlOYW1lLCBvYmplY3QtPm9iamVjdElEKCkpOw0KKyAgICBlbHNlDQorICAgICAgICBzZXRQ
cm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG51bGxwdHIsIHRydWUpOw0KIH0NCiANCiB2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQXR0
cmlidXRlVmFsdWVWYXJpYW50JiYgdmFsdWUsIGJvb2wgc2hvdWxkUmVtb3ZlKQ0KQEAgLTE0NSw2
ICsxODgsMjIgQEAgQVhJc29sYXRlZFRyZWUqIEFYSXNvbGF0ZWRPYmplY3Q6OnRyZWUoKSBjb25z
dA0KICAgICByZXR1cm4gbV9jYWNoZWRUcmVlLmdldCgpOw0KIH0NCiANCitBWENvcmVPYmplY3Qq
IEFYSXNvbGF0ZWRPYmplY3Q6Om9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkgY29uc3QNCit7DQorICAgIGF1dG8gdmFsdWUgPSBtX2F0dHJpYnV0ZU1hcC5n
ZXQocHJvcGVydHlOYW1lKTsNCisgICAgQVhJRCBub2RlSUQgPSBXVEY6OnN3aXRjaE9uKHZhbHVl
LA0KKyAgICAgICAgWyZdIChPcHRpb25hbDxBWElEPiB0eXBlZFZhbHVlKSB7DQorICAgICAgICAg
ICAgaWYgKCF0eXBlZFZhbHVlKQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gSW52YWxpZEFYSUQ7
DQorICAgICAgICByZXR1cm4gdHlwZWRWYWx1ZS52YWx1ZSgpOw0KKyAgICAgICAgfSwNCisgICAg
ICAgIFtdIChhdXRvJikgeyByZXR1cm4gSW52YWxpZEFYSUQ7IH0NCisgICAgKTsNCisgICAgDQor
ICAgIHJldHVybiB0cmVlKCktPm5vZGVGb3JJRChub2RlSUQpLmdldCgpOw0KK30NCisNCisNCiBG
bG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgY29uc3QNCiB7DQogICAgIGF1dG8gdmFsdWUgPSBtX2F0dHJpYnV0
ZU1hcC5nZXQocHJvcGVydHlOYW1lKTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oDQppbmRl
eCBmOWE3NmE1NDA3Yy4uYjJiZTY0NTRmZTcgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaA0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2Rl
LmgNCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEFYSXNvbGF0ZWRUcmVlOw0KIA0KIGNsYXNzIEFY
SXNvbGF0ZWRPYmplY3QgZmluYWwgOiBwdWJsaWMgQVhDb3JlT2JqZWN0IHsNCiBwdWJsaWM6DQot
ICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZE9iamVjdD4gY3JlYXRlKGNvbnN0IEFYQ29yZU9iamVj
dCYpOw0KKyAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZShBWENvcmVPYmpl
Y3QmKTsNCiAgICAgfkFYSXNvbGF0ZWRPYmplY3QoKTsNCiANCiAgICAgdm9pZCBzZXRPYmplY3RJ
RChBWElEIGlkKSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQ0KQEAgLTU1MCw0NSArNTUwLDQ1IEBA
IHByaXZhdGU6DQogDQogICAgIHZvaWQgbm90aWZ5SWZJZ25vcmVkVmFsdWVDaGFuZ2VkKCkgb3Zl
cnJpZGUgeyB9DQogDQotICAgIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNNYXRoRnJhY3Rpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBib29sIGlzTWF0aEZlbmNlZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3Jp
cHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBib29sIGlzTWF0aFJv
dygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNNYXRoVW5k
ZXJPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9vbCBpc01h
dGhSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9vbCBpc01h
dGhTcXVhcmVSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9v
bCBpc01hdGhUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9v
bCBpc01hdGhOdW1iZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBi
b29sIGlzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0g
ICAgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0NCi0gICAgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNNYXRoSWRlbnRpZmllcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQotICAgIGJvb2wgaXNNYXRoVGFibGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBib29sIGlzTWF0aFRhYmxlUm93KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9vbCBpc01hdGhUYWJsZUNlbGwo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KLSAgICBib29sIGlzTWF0aE11bHRp
c2NyaXB0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCi0gICAgYm9vbCBpc01h
dGhUb2tlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQorICAgIGJvb2wgaXNN
YXRoRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6SXNNYXRoRWxlbWVudCk7IH0NCisgICAgYm9vbCBpc01hdGhGcmFjdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNNYXRoRnJhY3Rpb24pOyB9DQorICAgIGJvb2wgaXNNYXRoRmVuY2VkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01h
dGhGZW5jZWQpOyB9DQorICAgIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
TWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KTsgfQ0KKyAgICBib29sIGlzTWF0aFJvdygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNN
YXRoUm93KTsgfQ0KKyAgICBib29sIGlzTWF0aFVuZGVyT3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVW5kZXJPdmVy
KTsgfQ0KKyAgICBib29sIGlzTWF0aFJvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aFJvb3QpOyB9DQorICAgIGJvb2wg
aXNNYXRoU3F1YXJlUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoU3F1YXJlUm9vdCk7IH0NCisgICAgYm9vbCBpc01h
dGhUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpJc01hdGhUZXh0KTsgfQ0KKyAgICBib29sIGlzTWF0aE51bWJlcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNN
YXRoTnVtYmVyKTsgfQ0KKyAgICBib29sIGlzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhPcGVyYXRv
cik7IH0NCisgICAgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhGZW5jZU9wZXJh
dG9yKTsgfQ0KKyAgICBib29sIGlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhTZXBh
cmF0b3JPcGVyYXRvcik7IH0NCisgICAgYm9vbCBpc01hdGhJZGVudGlmaWVyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhJ
ZGVudGlmaWVyKTsgfQ0KKyAgICBib29sIGlzTWF0aFRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhUYWJsZSk7IH0N
CisgICAgYm9vbCBpc01hdGhUYWJsZVJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNYXRoVGFibGVSb3cpOyB9DQorICAgIGJv
b2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01hdGhUYWJsZUNlbGwpOyB9DQorICAgIGJvb2wgaXNN
YXRoTXVsdGlzY3JpcHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OklzTWF0aE11bHRpc2NyaXB0KTsgfQ0KKyAgICBib29sIGlzTWF0
aFRva2VuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpJc01hdGhUb2tlbik7IH0NCiAgICAgYm9vbCBpc01hdGhTY3JpcHRPYmplY3Qo
QWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQ0KICAgICBib29sIGlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQ0KIA0KLSAgICBBWENvcmVPYmplY3QqIG1hdGhSYWRpY2FuZE9iamVjdCgpIG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0NCi0gICAgQVhDb3JlT2JqZWN0KiBtYXRoUm9vdEluZGV4T2Jq
ZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQ0KKyAgICBBWENvcmVPYmplY3QqIG1h
dGhSYWRpY2FuZE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpNYXRoUmFkaWNhbmRPYmplY3QpOyB9DQorICAgIEFYQ29yZU9iamVj
dCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXRoUm9vdEluZGV4T2JqZWN0KTsgfQ0KIA0KLSAgICBB
WENvcmVPYmplY3QqIG1hdGhVbmRlck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0NCi0gICAgQVhDb3JlT2JqZWN0KiBtYXRoT3Zlck9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0NCisgICAgQVhDb3JlT2JqZWN0KiBtYXRoVW5kZXJPYmplY3QoKSBvdmVycmlk
ZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aFVuZGVy
T2JqZWN0KTsgfQ0KKyAgICBBWENvcmVPYmplY3QqIG1hdGhPdmVyT2JqZWN0KCkgb3ZlcnJpZGUg
eyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhPdmVyT2Jq
ZWN0KTsgfQ0KIA0KLSAgICBBWENvcmVPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSBvdmVy
cmlkZSB7IHJldHVybiBudWxscHRyOyB9DQotICAgIEFYQ29yZU9iamVjdCogbWF0aERlbm9taW5h
dG9yT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQ0KKyAgICBBWENvcmVPYmpl
Y3QqIG1hdGhOdW1lcmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aE51bWVyYXRvck9iamVjdCk7IH0NCisgICAgQVhD
b3JlT2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmpl
Y3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aERlbm9taW5hdG9yT2JqZWN0KTsg
fQ0KIA0KLSAgICBBWENvcmVPYmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQ0KLSAgICBBWENvcmVPYmplY3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSBv
dmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9DQotICAgIEFYQ29yZU9iamVjdCogbWF0aFN1cGVy
c2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQ0KKyAgICBBWENvcmVP
YmplY3QqIG1hdGhCYXNlT2JqZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhCYXNlT2JqZWN0KTsgfQ0KKyAgICBBWENvcmVPYmpl
Y3QqIG1hdGhTdWJzY3JpcHRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aFN1YnNjcmlwdE9iamVjdCk7IH0NCisgICAgQVhD
b3JlT2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBvYmpl
Y3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6TWF0aFN1cGVyc2NyaXB0T2JqZWN0KTsg
fQ0KIA0KLSAgICBTdHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBTdHJpbmcoKTsgfQ0KLSAgICBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3RyaW5nKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0NCi0gICAgaW50IG1hdGhMaW5lVGhp
Y2tuZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQ0KLSAgICBib29sIGlzQW5vbnlt
b3VzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCisgICAg
U3RyaW5nIG1hdGhGZW5jZWRPcGVuU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3Ry
aW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhGZW5jZWRPcGVuU3RyaW5nKTsg
fQ0KKyAgICBTdHJpbmcgbWF0aEZlbmNlZENsb3NlU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhGZW5jZWRDbG9z
ZVN0cmluZyk7IH0NCisgICAgaW50IG1hdGhMaW5lVGhpY2tuZXNzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gaW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1hdGhMaW5lVGhpY2tu
ZXNzKTsgfQ0KKyAgICBib29sIGlzQW5vbnltb3VzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0Fub255bW91
c01hdGhPcGVyYXRvcik7IH0NCiANCiAgICAgdm9pZCBtYXRoUHJlc2NyaXB0cyhBY2Nlc3NpYmls
aXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSBvdmVycmlkZSB7IH0NCiAgICAgdm9pZCBtYXRoUG9z
dHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3ZlcnJpZGUgeyB9
DQpAQCAtNjM5LDE4ICs2MzksNTEgQEAgcHJpdmF0ZToNCiANCiAgICAgZW51bSBjbGFzcyBBWFBy
b3BlcnR5TmFtZSA6IHVpbnQ4X3Qgew0KICAgICAgICAgTm9uZSA9IDAsDQorICAgICAgICBEZXNj
cmlwdGlvbiwNCiAgICAgICAgIEhlbHBUZXh0LA0KICAgICAgICAgSXNBY2Nlc3NpYmlsaXR5SWdu
b3JlZCwNCisgICAgICAgIElzQW5vbnltb3VzTWF0aE9wZXJhdG9yLA0KICAgICAgICAgSXNBdHRh
Y2htZW50LA0KICAgICAgICAgSXNGaWxlVXBsb2FkQnV0dG9uLA0KICAgICAgICAgSXNJbWFnZSwN
CiAgICAgICAgIElzSW1hZ2VNYXBMaW5rLA0KICAgICAgICAgSXNMaW5rLA0KKyAgICAgICAgSXNN
YXRoRWxlbWVudCwNCisgICAgICAgIElzTWF0aEZyYWN0aW9uLA0KKyAgICAgICAgSXNNYXRoRmVu
Y2VkLA0KKyAgICAgICAgSXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQsDQorICAgICAgICBJc01h
dGhSb3csDQorICAgICAgICBJc01hdGhVbmRlck92ZXIsDQorICAgICAgICBJc01hdGhSb290LA0K
KyAgICAgICAgSXNNYXRoU3F1YXJlUm9vdCwNCisgICAgICAgIElzTWF0aFRleHQsDQorICAgICAg
ICBJc01hdGhOdW1iZXIsDQorICAgICAgICBJc01hdGhPcGVyYXRvciwNCisgICAgICAgIElzTWF0
aEZlbmNlT3BlcmF0b3IsDQorICAgICAgICBJc01hdGhTZXBhcmF0b3JPcGVyYXRvciwNCisgICAg
ICAgIElzTWF0aElkZW50aWZpZXIsDQorICAgICAgICBJc01hdGhUYWJsZSwNCisgICAgICAgIElz
TWF0aFRhYmxlUm93LA0KKyAgICAgICAgSXNNYXRoVGFibGVDZWxsLA0KKyAgICAgICAgSXNNYXRo
TXVsdGlzY3JpcHQsDQorICAgICAgICBJc01hdGhUb2tlbiwNCisgICAgICAgIElzTWF0aFNjcmlw
dE9iamVjdCwNCiAgICAgICAgIElzTWVkaWFDb250cm9sTGFiZWwsDQogICAgICAgICBJc1Njcm9s
bGJhciwNCiAgICAgICAgIElzVHJlZSwNCiAgICAgICAgIElzVHJlZUl0ZW0sDQotICAgICAgICBE
ZXNjcmlwdGlvbiwNCisgICAgICAgIE1hdGhGZW5jZWRPcGVuU3RyaW5nLA0KKyAgICAgICAgTWF0
aEZlbmNlZENsb3NlU3RyaW5nLA0KKyAgICAgICAgTWF0aExpbmVUaGlja25lc3MsDQorICAgICAg
ICBNYXRoUmFkaWNhbmRPYmplY3QsDQorICAgICAgICBNYXRoUm9vdEluZGV4T2JqZWN0LA0KKyAg
ICAgICAgTWF0aFVuZGVyT2JqZWN0LA0KKyAgICAgICAgTWF0aE92ZXJPYmplY3QsDQorICAgICAg
ICBNYXRoTnVtZXJhdG9yT2JqZWN0LA0KKyAgICAgICAgTWF0aERlbm9taW5hdG9yT2JqZWN0LA0K
KyAgICAgICAgTWF0aEJhc2VPYmplY3QsDQorICAgICAgICBNYXRoU3Vic2NyaXB0T2JqZWN0LA0K
KyAgICAgICAgTWF0aFN1cGVyc2NyaXB0T2JqZWN0LA0KICAgICAgICAgUmVsYXRpdmVGcmFtZSwN
CiAgICAgICAgIFJvbGVWYWx1ZSwNCiAgICAgICAgIFJvbGVQbGF0Zm9ybVN0cmluZywNCkBAIC02
NjYsMTggKzY5OSwyMCBAQCBwcml2YXRlOg0KICAgICBBWElzb2xhdGVkVHJlZSogdHJlZSgpIGNv
bnN0Ow0KIA0KICAgICBBWElzb2xhdGVkT2JqZWN0KCkgPSBkZWZhdWx0Ow0KLSAgICBBWElzb2xh
dGVkT2JqZWN0KGNvbnN0IEFYQ29yZU9iamVjdCYpOw0KLSAgICB2b2lkIGluaXRpYWxpemVBdHRy
aWJ1dGVEYXRhKGNvbnN0IEFYQ29yZU9iamVjdCYpOw0KKyAgICBBWElzb2xhdGVkT2JqZWN0KEFY
Q29yZU9iamVjdCYpOw0KKyAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9i
amVjdCYpOw0KIA0KLSAgICB1c2luZyBBdHRyaWJ1dGVWYWx1ZVZhcmlhbnQgPSBWYXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJsZSwgT3B0aW9u
YWw8RmxvYXRSZWN0Pj47DQorICAgIHVzaW5nIEF0dHJpYnV0ZVZhbHVlVmFyaWFudCA9IFZhcmlh
bnQ8c3RkOjpudWxscHRyX3QsIFN0cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91YmxlLCBP
cHRpb25hbDxGbG9hdFJlY3Q+LCBBWElEPjsNCiAgICAgdm9pZCBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZSwgQXR0cmlidXRlVmFsdWVWYXJpYW50JiYsIGJvb2wgc2hvdWxkUmVtb3ZlID0gZmFs
c2UpOw0KLQ0KKyAgICB2b2lkIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lLCBBWENv
cmVPYmplY3QqKTsNCisgICAgDQogICAgIGJvb2wgYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lKSBjb25zdDsNCiAgICAgY29uc3QgU3RyaW5nIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lKSBjb25zdDsNCiAgICAgaW50IGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lKSBjb25zdDsNCiAgICAgdW5zaWduZWQgdW5zaWduZWRBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZSkgY29uc3Q7DQogICAgIGRvdWJsZSBkb3VibGVBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZSkgY29uc3Q7DQogICAgIEZsb2F0UmVjdCByZWN0QXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWUpIGNvbnN0Ow0KKyAgICBBWENvcmVPYmplY3QqIG9iamVjdEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsNCiANCiAgICAgQVhJRCBtX3BhcmVudDsNCiAgICAg
QVhJRCBtX2lkOw==
</data>

          </attachment>
      

    </bug>

</bugzilla>