<?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>63336</bug_id>
          
          <creation_ts>2011-06-24 11:03:33 -0700</creation_ts>
          <short_desc>Convert SVGPath to SVGAnimatorFactory concept</short_desc>
          <delta_ts>2011-06-25 14:37:11 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>426987</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-24 11:03:33 -0700</bug_when>
    <thetext>Convert SVGPath to SVGAnimatorFactory concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426988</commentid>
    <comment_count>1</comment_count>
      <attachid>98512</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-24 11:04:32 -0700</bug_when>
    <thetext>Created attachment 98512
SVGAnimatedPathAnimator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427380</commentid>
    <comment_count>2</comment_count>
      <attachid>98592</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-25 10:15:10 -0700</bug_when>
    <thetext>Created attachment 98592
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427385</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-25 10:29:10 -0700</bug_when>
    <thetext>Dirk have a look at &quot;https://bugs.webkit.org/attachment.cgi?oldid=98512&amp;action=interdiff&amp;newid=98592&amp;headers=1&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427387</commentid>
    <comment_count>4</comment_count>
      <attachid>98595</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-25 10:32:39 -0700</bug_when>
    <thetext>Created attachment 98595
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427388</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-25 10:35:57 -0700</bug_when>
    <thetext>Attachment 98595 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/svg/SVGAnimatedPath.cpp:42:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.cpp:42:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.cpp:72:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.cpp:72:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.cpp:77:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.cpp:77:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.cpp:77:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:38:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:38:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Total errors found: 14 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427392</commentid>
    <comment_count>6</comment_count>
      <attachid>98595</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-25 10:51:20 -0700</bug_when>
    <thetext>Comment on attachment 98595
Patch v3

Attachment 98595 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8933881</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427396</commentid>
    <comment_count>7</comment_count>
      <attachid>98595</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-06-25 11:24:55 -0700</bug_when>
    <thetext>Comment on attachment 98595
Patch v3

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

LGTM in general, nice to see lots of code removed here and one general concept being used. I&apos;ll leave it to kri for the real review since he is more familiar with this code.

&gt; Source/WebCore/svg/SVGAnimatedPath.cpp:98
&gt; +        ASSERT(percentage &gt;= 0);

Is that ASSERT useful? AFAICS percentage must be zero?

&gt; Source/WebCore/svg/SVGAnimatedPath.cpp:114
&gt; +    if ((animationMode == FromToAnimation &amp;&amp; percentage &gt; 0.5) || animationMode == ToAnimation || percentage == 1) 

But percentage == 1 already made an early exit above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427397</commentid>
    <comment_count>8</comment_count>
      <attachid>98595</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-25 11:25:55 -0700</bug_when>
    <thetext>Comment on attachment 98595
Patch v3

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

You forgot to edit WebCore.gyp. And please remove the unnecessary headers in SVGAnimateElement.h/.cpp. Patch looks great btw :-)  r- because of the build failure and the includes.

&gt; Source/WebCore/svg/SVGAnimatedPath.cpp:39
&gt; +PassOwnPtr&lt;SVGAnimatedType&gt; SVGAnimatedPathAnimator::constructFromString(const String&amp; string)
&gt; +{
&gt; +    OwnPtr&lt;SVGPathByteStream&gt; byteStream = SVGPathByteStream::create();
&gt; +    SVGPathParserFactory::self()-&gt;buildSVGPathByteStreamFromString(string, byteStream, UnalteredParsing);
&gt; +    return SVGAnimatedType::createPath(byteStream.leakPtr());

Don&apos;t you think it might be more secure to release the OwnPtr&lt;SVGPathByteStream&gt; here and pass an PassOwnPtr? SVGAnimatedType::createPath might be used on other places in the future. We should make sure that the caller does not forget, that it hasn&apos;t the ownership anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427398</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-25 11:28:00 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 98595 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98595&amp;action=review
&gt; 
&gt; LGTM in general, nice to see lots of code removed here and one general concept being used. I&apos;ll leave it to kri for the real review since he is more familiar with this code.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedPath.cpp:98
&gt; &gt; +        ASSERT(percentage &gt;= 0);
&gt; 
&gt; Is that ASSERT useful? AFAICS percentage must be zero?
Good point! this gets already asserted in SVGAnimateElement.cpp

&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedPath.cpp:114
&gt; &gt; +    if ((animationMode == FromToAnimation &amp;&amp; percentage &gt; 0.5) || animationMode == ToAnimation || percentage == 1) 
&gt; 
&gt; But percentage == 1 already made an early exit above?

Second good point! :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427431</commentid>
    <comment_count>10</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-25 14:07:04 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 98595 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98595&amp;action=review
&gt; 
&gt; You forgot to edit WebCore.gyp. And please remove the unnecessary headers in SVGAnimateElement.h/.cpp. Patch looks great btw :-)  r- because of the build failure and the includes.
Fixed :-)

&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedPath.cpp:39
&gt; &gt; +PassOwnPtr&lt;SVGAnimatedType&gt; SVGAnimatedPathAnimator::constructFromString(const String&amp; string)
&gt; &gt; +{
&gt; &gt; +    OwnPtr&lt;SVGPathByteStream&gt; byteStream = SVGPathByteStream::create();
&gt; &gt; +    SVGPathParserFactory::self()-&gt;buildSVGPathByteStreamFromString(string, byteStream, UnalteredParsing);
&gt; &gt; +    return SVGAnimatedType::createPath(byteStream.leakPtr());
&gt; 
&gt; Don&apos;t you think it might be more secure to release the OwnPtr&lt;SVGPathByteStream&gt; here and pass an PassOwnPtr? SVGAnimatedType::createPath might be used on other places in the future. We should make sure that the caller does not forget, that it hasn&apos;t the ownership anymore.
Okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427432</commentid>
    <comment_count>11</comment_count>
      <attachid>98605</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-25 14:07:54 -0700</bug_when>
    <thetext>Created attachment 98605
Patch v4

Fixed Robs / Dirks comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427433</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-25 14:10:31 -0700</bug_when>
    <thetext>Attachment 98605 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/svg/SVGAnimatedPath.cpp:48:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.cpp:48:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.cpp:72:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.cpp:72:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.cpp:77:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.cpp:77:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.cpp:77:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:38:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:38:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPath.h:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Total errors found: 14 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427438</commentid>
    <comment_count>13</comment_count>
      <attachid>98605</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-25 14:31:23 -0700</bug_when>
    <thetext>Comment on attachment 98605
Patch v4

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

r=me with comments.

&gt; Source/WebCore/svg/SVGAnimateElement.h:74
&gt;  

You forgot to remove #include &quot;SVGPathByteStream.h&quot;

&gt; Source/WebCore/svg/SVGAnimatedPath.cpp:121
&gt; +    // No paced animations for strings.

Hehe, not strings but SVGPathSegLists :) Please fix the comment. Make it to a FIXME, Opera supports it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427443</commentid>
    <comment_count>14</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-25 14:37:11 -0700</bug_when>
    <thetext>Landed in r89749.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98512</attachid>
            <date>2011-06-24 11:04:32 -0700</date>
            <delta_ts>2011-06-25 10:15:10 -0700</delta_ts>
            <desc>SVGAnimatedPathAnimator</desc>
            <filename>svg-path-animation-2.patch</filename>
            <type>text/plain</type>
            <size>22863</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDg5NjYxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAxLDYgKzEwMDEsOCBAQAog
CQk0M0I5MzM2OTEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQjkzMzY3MTNCMjYx
QjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5oICovOyB9OwogCQk0M0I5MzM2QTEz
QjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNCOTMzNjgxM0IyNjFCMTAwNDU4NEJG
IC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCAqLzsgfTsKIAkJNDNDMDkyQkMxMkQ5RTRFRTAw
QTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQzA5MkJBMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0LmggKi87IH07CisJCTQzRDAxMjhGMTNCNEMwRjgwMEFFMjFBMiAv
KiBTVkdBbmltYXRlZFBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQzRDAxMjhEMTNCNEMwRjgwMEFFMjFBMiAvKiBTVkdBbmltYXRlZFBhdGguaCAq
LzsgfTsKKwkJNDNEMDEyOTAxM0I0QzBGODAwQUUyMUEyIC8qIFNWR0FuaW1hdGVkUGF0aC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0QwMTI4RTEz
QjRDMEY4MDBBRTIxQTIgLyogU1ZHQW5pbWF0ZWRQYXRoLmNwcCAqLzsgfTsKIAkJNDQxNTI5MkUw
RTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MTUyOTJDMEUxQUU4QTAwMEM0QTJE
MCAvKiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQxNTI5MkYwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQxNTI5MkQwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwICovOyB9OwogCQk0NDFCMDU1QzBDRDc3QTJEMDA3QzFGMTggLyogRE9NSFRNTEVt
YmVkRWxlbWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjlBQUZCMENCODRFODgwMDc2NDdDNSAvKiBET01I
VE1MRW1iZWRFbGVtZW50UHJpdmF0ZS5oICovOyB9OwpAQCAtNzQ5MCw2ICs3NDkyLDggQEAKIAkJ
NDNCOTMzNjgxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkUG9pbnRMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNDMDkyQjkxMkQ5RTRFRTAwQTk4OUMz
IC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQzQzA5MkJBMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0ZvcmVp
Z25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDNEMDEyOEQxM0I0QzBG
ODAwQUUyMUEyIC8qIFNWR0FuaW1hdGVkUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdBbmltYXRlZFBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDNEMDEyOEUxM0I0QzBGODAwQUUyMUEyIC8qIFNWR0FuaW1hdGVkUGF0aC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZFBhdGguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NDE1MjkyQzBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MTUy
OTJEMEUxQUU4QTAwMEM0QTJEMCAvKiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDI5QUFGQjBDQjg0RTg4MDA3NjQ3QzUg
LyogRE9NSFRNTEVtYmVkRWxlbWVudFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUhUTUxFbWJlZEVsZW1lbnRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNzQxMiw2ICsxNzQxNiw4IEBACiAJCQkJQjIyMjc3RUMwRDAwQkYxRjAw
NzFCNzgyIC8qIFNWR0FuaW1hdGVkTnVtYmVyLmlkbCAqLywKIAkJCQkwOEIzNUIxNjEyN0I2QTg4
MDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggKi8sCiAJCQkJQjIyMjc3RUQwRDAw
QkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5pZGwgKi8sCisJCQkJNDNEMDEy
OEQxM0I0QzBGODAwQUUyMUEyIC8qIFNWR0FuaW1hdGVkUGF0aC5oICovLAorCQkJCTQzRDAxMjhF
MTNCNEMwRjgwMEFFMjFBMiAvKiBTVkdBbmltYXRlZFBhdGguY3BwICovLAogCQkJCTQzQjkzMzY3
MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5oICovLAogCQkJCTQzQjkz
MzY4MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgKi8sCiAJCQkJ
MDhGRTBCQzQxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
by5oICovLApAQCAtMjMwNjQsNiArMjMwNzAsNyBAQAogCQkJCTk3QjFGMDJGMTNCMDI1RDIwMEY1
MTAzRiAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDNC
OTMzNjkxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0M0E2MjVGODEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDNEMDEyOEYxM0I0QzBGODAwQUUyMUEyIC8qIFNWR0FuaW1h
dGVkUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTgyNyw2ICsyNTgzNCw3IEBACiAJCQkJNDNC
OTMzNkExM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQzQTYyNUY5MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzQTYyNjY3MTNCM0QxMTAwMEFDOTRCOCAvKiBTVkdB
bmltYXRlZFN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0M0QwMTI5MDEzQjRDMEY4MDBB
RTIxQTIgLyogU1ZHQW5pbWF0ZWRQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA4OTY2MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0Nyw3ICsxNDcsNiBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmltYXRl
CiB7CiAgICAgQVNTRVJUKHBlcmNlbnRhZ2UgPj0gMCAmJiBwZXJjZW50YWdlIDw9IDEpOwogICAg
IEFTU0VSVChyZXN1bHRFbGVtZW50KTsKLSAgICBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUg
PSB0aGlzLT5hbmltYXRpb25Nb2RlKCk7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9
IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKQEAgLTE2Miw0MyArMTYxLDExIEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNh
bGN1bGF0ZUFuaW1hdGUKICAgICBpZiAocmVzdWx0cy0+bV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUg
PT0gQW5pbWF0ZWRTdHJpbmcgJiYgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgIT0gQW5pbWF0ZWRT
dHJpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlKSB7Ci0gICAgY2FzZSBBbmltYXRlZFBhdGg6IHsKLSAgICAgICAgaWYgKGFuaW1hdGlvbk1v
ZGUgPT0gVG9BbmltYXRpb24pIHsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHRzLT5tX2FuaW1h
dGVkUGF0aFBvaW50ZXIpOwotICAgICAgICAgICAgbV9mcm9tUGF0aCA9IHJlc3VsdHMtPm1fYW5p
bWF0ZWRQYXRoUG9pbnRlci0+Y29weSgpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghcGVyY2Vu
dGFnZSkgewotICAgICAgICAgICAgQVNTRVJUKG1fZnJvbVBhdGgpOwotICAgICAgICAgICAgQVNT
RVJUKHBlcmNlbnRhZ2UgPj0gMCk7Ci0gICAgICAgICAgICByZXN1bHRzLT5tX2FuaW1hdGVkUGF0
aFBvaW50ZXIgPSBtX2Zyb21QYXRoLmdldCgpOwotICAgICAgICB9IGVsc2UgaWYgKHBlcmNlbnRh
Z2UgPT0gMSkgewotICAgICAgICAgICAgQVNTRVJUKG1fdG9QYXRoKTsKLSAgICAgICAgICAgIHJl
c3VsdHMtPm1fYW5pbWF0ZWRQYXRoUG9pbnRlciA9IG1fdG9QYXRoLmdldCgpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgaWYgKG1fZnJvbVBhdGggJiYgbV90b1BhdGgpIHsKLSAgICAg
ICAgICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJG
YWN0b3J5OjpzZWxmKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFmYWN0b3J5LT5idWlsZEFuaW1h
dGVkU1ZHUGF0aEJ5dGVTdHJlYW0obV9mcm9tUGF0aC5nZXQoKSwgbV90b1BhdGguZ2V0KCksIHJl
c3VsdHMtPm1fYW5pbWF0ZWRQYXRoLCBwZXJjZW50YWdlKSkgewotICAgICAgICAgICAgICAgICAg
ICByZXN1bHRzLT5tX2FuaW1hdGVkUGF0aC5jbGVhcigpOwotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRzLT5tX2FuaW1hdGVkUGF0aFBvaW50ZXIgPSAwOwotICAgICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgICAgICByZXN1bHRzLT5tX2FuaW1hdGVkUGF0aFBvaW50ZXIgPSBy
ZXN1bHRzLT5tX2FuaW1hdGVkUGF0aC5nZXQoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoUG9pbnRlciA9IDA7Ci0gICAgICAgICAg
ICAvLyBGYWxsIGJhY2sgdG8gZGlzY3JldGUgYW5pbWF0aW9uIGlmIHRoZSBwYXRocyBhcmUgbm90
IGNvbXBhdGlibGUKLSAgICAgICAgICAgIGlmICghcmVzdWx0cy0+bV9hbmltYXRlZFBhdGhQb2lu
dGVyKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1fZnJvbVBhdGgpOwotICAgICAgICAgICAg
ICAgIEFTU0VSVChtX3RvUGF0aCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFyZXN1bHRzLT5t
X2FuaW1hdGVkUGF0aCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0cy0+bV9hbmltYXRlZFBhdGhQ
b2ludGVyID0gKChhbmltYXRpb25Nb2RlID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJjZW50YWdl
ID4gMC41ZikgfHwgYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbiB8fCBwZXJjZW50YWdlID09
IDEpIAotICAgICAgICAgICAgICAgICAgICA/IG1fdG9QYXRoLmdldCgpIDogbV9mcm9tUGF0aC5n
ZXQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQog
ICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgY2Fz
ZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgorICAgIGNhc2UgQW5p
bWF0ZWRQYXRoOgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJl
Y3Q6CiAgICAgY2FzZSBBbmltYXRlZFN0cmluZzogewpAQCAtMjU5LDIxICsyMjYsMTEgQEAgYm9v
bCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgIC8vIEZJWE1FOiBOZWVk
cyBtb3JlIHNvbGlkIHdheSBkZXRlcm1pbmUgdGFyZ2V0IGF0dHJpYnV0ZSB0eXBlLgogICAgIG1f
YW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0gZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRh
cmdldEVsZW1lbnQpOwogICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKLSAg
ICBjYXNlIEFuaW1hdGVkUGF0aDogewotICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFj
dG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7Ci0gICAgICAgIGlmIChmYWN0b3J5
LT5idWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyh0b1N0cmluZywgbV90b1BhdGgsIFVu
YWx0ZXJlZFBhcnNpbmcpKSB7Ci0gICAgICAgICAgICAvLyBGb3IgdG8tYW5pbWF0aW9ucyB0aGUg
ZnJvbSBudW1iZXIgaXMgY2FsY3VsYXRlZCBsYXRlcgotICAgICAgICAgICAgaWYgKGFuaW1hdGlv
bk1vZGUoKSA9PSBUb0FuaW1hdGlvbiB8fCBmYWN0b3J5LT5idWlsZFNWR1BhdGhCeXRlU3RyZWFt
RnJvbVN0cmluZyhmcm9tU3RyaW5nLCBtX2Zyb21QYXRoLCBVbmFsdGVyZWRQYXJzaW5nKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBtX2Zyb21QYXRo
LmNsZWFyKCk7Ci0gICAgICAgIG1fdG9QYXRoLmNsZWFyKCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAg
IGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKKyAgICBjYXNl
IEFuaW1hdGVkUGF0aDoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0
ZWRSZWN0OgogICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CkBAIC0yOTksNiArMjU2LDcgQEAgYm9v
bCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgIGNhc2UgQW5pbWF0ZWRD
b2xvcjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6
CisgICAgY2FzZSBBbmltYXRlZFBhdGg6CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKICAgICBj
YXNlIEFuaW1hdGVkUmVjdDoKICAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOgpAQCAtMzE3LDE3ICsy
NzUsMTEgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1ZQogICAgIEFT
U0VSVCh0YXJnZXRFbGVtZW50KTsKICAgICBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVy
bWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KTsKICAgICBzd2l0Y2ggKG1f
YW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7Ci0gICAgY2FzZSBBbmltYXRlZFBhdGg6IHsKLSAgICAg
ICAgbV9hbmltYXRlZFBhdGguY2xlYXIoKTsKLSAgICAgICAgU1ZHUGF0aFBhcnNlckZhY3Rvcnkq
IGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOwotICAgICAgICBmYWN0b3J5
LT5idWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhiYXNlU3RyaW5nLCBtX2FuaW1hdGVk
UGF0aCwgVW5hbHRlcmVkUGFyc2luZyk7Ci0gICAgICAgIG1fYW5pbWF0ZWRQYXRoUG9pbnRlciA9
IG1fYW5pbWF0ZWRQYXRoLmdldCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGNhc2Ug
QW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgY2FzZSBBbmltYXRl
ZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgorICAgIGNhc2UgQW5pbWF0ZWRQYXRo
OgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAg
Y2FzZSBBbmltYXRlZFN0cmluZzogewpAQCAtMzQ3LDIzICsyOTksMTEgQEAgdm9pZCBTVkdBbmlt
YXRlRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYQogewogICAgIFN0cmluZyB2YWx1ZVRvQXBwbHk7
CiAgICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgewotICAgIGNhc2UgQW5pbWF0
ZWRQYXRoOiB7Ci0gICAgICAgIGlmICghbV9hbmltYXRlZFBhdGhQb2ludGVyIHx8IG1fYW5pbWF0
ZWRQYXRoUG9pbnRlci0+aXNFbXB0eSgpKQotICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gU3Ry
aW5nKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBrZWVwIGdv
aW5nIHRvIHN0cmluZyBhbmQgYmFjayBiZWNhdXNlIHdlIGFyZSBjdXJyZW50bHkgb25seSBhYmxl
IHRvIHBhaW50Ci0gICAgICAgICAgICAvLyAicHJvY2Vzc2VkIiBwYXRocyB3aGVyZSBjb21wbGV4
IHNoYXBlcyBhcmUgcmVwbGFjZWQgd2l0aCBzaW1wbGVyIG9uZXMuIFBhdGggCi0gICAgICAgICAg
ICAvLyBtb3JwaGluZyBuZWVkcyB0byBiZSBkb25lIHdpdGggdW5wcm9jZXNzZWQgcGF0aHMuCi0g
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQgaWYgcGF0aHMgd2Vy
ZSBub3QgcHJvY2Vzc2VkIGF0IHBhcnNlIHRpbWUuCi0gICAgICAgICAgICBTVkdQYXRoUGFyc2Vy
RmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7Ci0gICAgICAg
ICAgICBmYWN0b3J5LT5idWlsZFN0cmluZ0Zyb21CeXRlU3RyZWFtKG1fYW5pbWF0ZWRQYXRoUG9p
bnRlciwgdmFsdWVUb0FwcGx5LCBVbmFsdGVyZWRQYXJzaW5nKTsKLSAgICAgICAgfQotICAgICAg
ICBicmVhazsKLSAgICB9CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0
ZWRDb2xvcjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0ZWROdW1i
ZXI6CisgICAgY2FzZSBBbmltYXRlZFBhdGg6CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKICAg
ICBjYXNlIEFuaW1hdGVkUmVjdDoKICAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOgpAQCAtMzg3LDYg
KzMyNyw3IEBAIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW4KICAgICBj
YXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFu
aW1hdGVkTnVtYmVyOgorICAgIGNhc2UgQW5pbWF0ZWRQYXRoOgogICAgIGNhc2UgQW5pbWF0ZWRQ
b2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgY2FzZSBBbmltYXRlZFN0cmluZzoK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKKyNpbmNsdWRlICJTVkdB
bmltYXRlZFBhdGguaCIKKworI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU1ZHUGF0aEJ5dGVTdHJlYW0uaCIKKyNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpTVkdB
bmltYXRlZFBhdGhBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50
LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKKyAgICA6IFNWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yKEFuaW1hdGVkUGF0aCwgYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpCit7Cit9
CisKK1Bhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6
Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBPd25QdHI8
U1ZHUGF0aEJ5dGVTdHJlYW0+IGJ5dGVTdHJlYW0gPSBTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRl
KCk7CisgICAgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKS0+YnVpbGRTVkdQYXRoQnl0ZVN0
cmVhbUZyb21TdHJpbmcoc3RyaW5nLCBieXRlU3RyZWFtLCBVbmFsdGVyZWRQYXJzaW5nKTsKKyAg
ICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQYXRoKGJ5dGVTdHJlYW0ucmVsZWFzZSgp
KTsKK30KKwordm9pZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZFRv
VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmlu
ZykKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgQVNTRVJUKG1fYW5pbWF0
aW9uRWxlbWVudCk7CisgICAgCisgICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9u
TW9kZSgpID09IFRvQW5pbWF0aW9uKQorICAgICAgICBmcm9tID0gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVQYXRoKFNWR1BhdGhCeXRlU3RyZWFtOjpjcmVhdGUoKSk7CisgICAgZWxzZQorICAgICAg
ICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKKyAgICB0byA9IGNvbnN0
cnVjdEZyb21TdHJpbmcodG9TdHJpbmcpOworfQorCit2b2lkIFNWR0FuaW1hdGVkUGF0aEFuaW1h
dG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZy
b20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKQoreworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50
KTsKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAgICAKKyAgICAvLyBOb3Qgc3Bl
Y2lmaWVkIHdoYXQgdG8gZG8gb24gJ2J5Jy1hbmltYXRpb25zIHdpdGggc3RyaW5nLiBGYWxsYmFj
ayB0byAndG8nLWFuaW1hdGlvbiByaWdodCBub3cuIAorICAgIGlmIChtX2FuaW1hdGlvbkVsZW1l
bnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBCeUFuaW1hdGlvbikKKyAgICAgICAgZnJvbSA9IFNWR0Fu
aW1hdGVkVHlwZTo6Y3JlYXRlUGF0aChTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCkpOworICAg
IGVsc2UKKyAgICAgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Cisg
ICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGJ5U3RyaW5nKTsKK30KKwordm9pZCBTVkdBbmlt
YXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdl
LCB1bnNpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIHRvLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit7CisgICAg
QVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQp
OworICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8
U1ZHQW5pbWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIAorICAgIEFuaW1h
dGlvbk1vZGUgYW5pbWF0aW9uTW9kZSA9IGFuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUo
KTsKKyAgICBTVkdQYXRoQnl0ZVN0cmVhbSogZnJvbVBhdGggPSBmcm9tLT5wYXRoKCk7CisgICAg
U1ZHUGF0aEJ5dGVTdHJlYW0qIGFuaW1hdGVkUGF0aCA9IGFuaW1hdGVkLT5wYXRoKCk7CisgICAg
QVNTRVJUKGZyb21QYXRoKTsKKyAgICBBU1NFUlQoYW5pbWF0ZWRQYXRoKTsKKyAgICBpZiAoYW5p
bWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbikKKyAgICAgICAgZnJvbVBhdGgtPmNvcHkoYW5pbWF0
ZWRQYXRoKTsKKworICAgIGlmICghcGVyY2VudGFnZSkgeworICAgICAgICBpZiAoYW5pbWF0aW9u
TW9kZSAhPSBUb0FuaW1hdGlvbikKKyAgICAgICAgICAgIGFuaW1hdGVkUGF0aC0+Y29weShmcm9t
UGF0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTVkdQYXRoQnl0ZVN0cmVhbSog
dG9QYXRoID0gdG8tPnBhdGgoKTsKKyAgICBBU1NFUlQodG9QYXRoKTsKKyAgICBpZiAocGVyY2Vu
dGFnZSA9PSAxKSB7CisgICAgICAgIGFuaW1hdGVkUGF0aC0+Y29weSh0b1BhdGgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIGFuaW1hdGVkUGF0aC0+Y2xlYXIoKTsKKyAgICBP
d25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IG5ld1BhdGggPSBhZG9wdFB0cihhbmltYXRlZFBhdGgp
OworICAgIGlmIChTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpLT5idWlsZEFuaW1hdGVkU1ZH
UGF0aEJ5dGVTdHJlYW0oZnJvbVBhdGgsIHRvUGF0aCwgbmV3UGF0aCwgcGVyY2VudGFnZSkpIHsK
KyAgICAgICAgYW5pbWF0ZWRQYXRoID0gbmV3UGF0aC5sZWFrUHRyKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgYW5pbWF0ZWRQYXRoID0gbmV3UGF0aC5sZWFrUHRyKCk7Cisg
ICAgaWYgKChhbmltYXRpb25Nb2RlID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJjZW50YWdlID4g
MC41KSB8fCBhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0gMSkg
CisgICAgICAgIGFuaW1hdGVkUGF0aC0+Y29weSh0b1BhdGgpOworICAgIGVsc2UKKyAgICAgICAg
YW5pbWF0ZWRQYXRoLT5jb3B5KGZyb21QYXRoKTsKK30KKworZmxvYXQgU1ZHQW5pbWF0ZWRQYXRo
QW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
Cit7CisgICAgLy8gTm8gcGFjZWQgYW5pbWF0aW9ucyBmb3Igc3RyaW5ncy4KKyAgICByZXR1cm4g
LTE7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5JTUFU
SU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdBbmltYXRlZFBhdGhf
aAorI2RlZmluZSBTVkdBbmltYXRlZFBhdGhfaAorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19BTklNQVRJT04pCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworICAKK2NsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CisKK2Ns
YXNzIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yIHsKKworcHVibGljOgorICAgIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yKFNWR0FuaW1hdGlv
bkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CisgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQYXRoQW5p
bWF0b3IoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAgIAorICAgIHZpcnR1YWwg
dm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZy
b21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNh
bGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVl
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUpOworICAgIHZpcnR1YWwgZmxvYXQgY2Fs
Y3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRv
U3RyaW5nKTsKK307Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAJKHJldmlzaW9uIDg5NjYxKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDgg
QEAKICNpbmNsdWRlICJTVkdDb2xvci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1
ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgi
CisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCIKICNpbmNsdWRlICJTVkdQb2ludExp
c3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsNiArNTMsOSBAQCBTVkdBbmltYXRl
ZFR5cGU6On5TVkdBbmltYXRlZFR5cGUoKQogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAgICAg
ICAgIGRlbGV0ZSBtX2RhdGEubnVtYmVyOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1h
dGVkUGF0aDoKKyAgICAgICAgZGVsZXRlIG1fZGF0YS5wYXRoOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgICAgICBkZWxldGUgbV9kYXRhLnBvaW50TGlzdDsK
ICAgICAgICAgYnJlYWs7CkBAIC05OCw2ICsxMDMsMTQgQEAgUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IFNWR0FuaW1hdGVkVAogICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOwog
fQogCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQ
YXRoKFBhc3NPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IHBhdGgpCit7CisgICAgQVNTRVJUKHBh
dGgpOworICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFkb3B0UHRy
KG5ldyBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRQYXRoKSk7CisgICAgYW5pbWF0ZWRUeXBlLT5t
X2RhdGEucGF0aCA9IHBhdGgubGVha1B0cigpOworICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVs
ZWFzZSgpOworfQorCiBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBl
OjpjcmVhdGVQb2ludExpc3QoU1ZHUG9pbnRMaXN0KiBwb2ludExpc3QpCiB7CiAgICAgQVNTRVJU
KHBvaW50TGlzdCk7CkBAIC0xNDYsNiArMTU5LDEyIEBAIGZsb2F0JiBTVkdBbmltYXRlZFR5cGU6
Om51bWJlcigpCiAgICAgcmV0dXJuICptX2RhdGEubnVtYmVyOwogfQogCitTVkdQYXRoQnl0ZVN0
cmVhbSogU1ZHQW5pbWF0ZWRUeXBlOjpwYXRoKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFu
aW1hdGVkUGF0aCk7CisgICAgcmV0dXJuIG1fZGF0YS5wYXRoOworfQorCiBTVkdQb2ludExpc3Qm
IFNWR0FuaW1hdGVkVHlwZTo6cG9pbnRMaXN0KCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IEFu
aW1hdGVkUG9pbnRzKTsKQEAgLTE3OSw2ICsxOTgsMTIgQEAgU3RyaW5nIFNWR0FuaW1hdGVkVHlw
ZTo6dmFsdWVBc1N0cmluZygpCiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgQVNT
RVJUKG1fZGF0YS5udW1iZXIpOwogICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoKm1fZGF0
YS5udW1iZXIpOworICAgIGNhc2UgQW5pbWF0ZWRQYXRoOiB7CisgICAgICAgIEFTU0VSVChtX2Rh
dGEucGF0aCk7CisgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAgU1ZHUGF0aFBhcnNlckZh
Y3Rvcnk6OnNlbGYoKS0+YnVpbGRTdHJpbmdGcm9tQnl0ZVN0cmVhbShtX2RhdGEucGF0aCwgdmFs
dWUsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQogICAg
IGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgICAgIEFTU0VSVChtX2RhdGEucG9pbnRMaXN0KTsK
ICAgICAgICAgcmV0dXJuIG1fZGF0YS5wb2ludExpc3QtPnZhbHVlQXNTdHJpbmcoKTsKQEAgLTIx
Niw2ICsyNDEsMTQgQEAgYm9vbCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoYwog
ICAgICAgICBBU1NFUlQobV9kYXRhLm51bWJlcik7CiAgICAgICAgIHBhcnNlTnVtYmVyRnJvbVN0
cmluZyh2YWx1ZSwgKm1fZGF0YS5udW1iZXIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFu
aW1hdGVkUGF0aDogeworICAgICAgICBtX2RhdGEucGF0aC0+Y2xlYXIoKTsKKyAgICAgICAgT3du
UHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBwYXRoQnl0ZVN0cmVhbSA9IGFkb3B0UHRyKG1fZGF0YS5w
YXRoKTsKKyAgICAgICAgaWYgKCFTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpLT5idWlsZFNW
R1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyh2YWx1ZSwgcGF0aEJ5dGVTdHJlYW0sIFVuYWx0ZXJl
ZFBhcnNpbmcpKQorICAgICAgICAgICAgZWMgPSAxOworICAgICAgICBtX2RhdGEucGF0aCA9IHBh
dGhCeXRlU3RyZWFtLmxlYWtQdHIoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ug
QW5pbWF0ZWRQb2ludHM6CiAgICAgICAgIEFTU0VSVChtX2RhdGEucG9pbnRMaXN0KTsKICAgICAg
ICAgbV9kYXRhLnBvaW50TGlzdC0+Y2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUeXBlLmgJKHJldmlzaW9uIDg5NjYxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw4IEBACiAKICNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKICNpbmNsdWRlICJTVkdFbGVtZW50Lmgi
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjksNiArMzEsNyBAQCBjbGFzcyBDb2xvcjsKIGNs
YXNzIEZsb2F0UmVjdDsKIGNsYXNzIFNWR0FuZ2xlOwogY2xhc3MgU1ZHTGVuZ3RoOworY2xhc3Mg
U1ZHUGF0aEJ5dGVTdHJlYW07CiBjbGFzcyBTVkdQb2ludExpc3Q7CiAKIGNsYXNzIFNWR0FuaW1h
dGVkVHlwZSB7CkBAIC00MCw2ICs0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUNvbG9yKENvbG9yKik7CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKik7CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVOdW1iZXIoZmxvYXQqKTsKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVBhdGgoUGFzc093blB0
cjxTVkdQYXRoQnl0ZVN0cmVhbT4pOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4gY3JlYXRlUG9pbnRMaXN0KFNWR1BvaW50TGlzdCopOwogICAgIHN0YXRpYyBQYXNzT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUmVjdChGbG9hdFJlY3QqKTsKICAgICBzdGF0aWMg
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVN0cmluZyhTdHJpbmcqKTsKQEAgLTUw
LDYgKzU0LDcgQEAgcHVibGljOgogICAgIENvbG9yJiBjb2xvcigpOwogICAgIFNWR0xlbmd0aCYg
bGVuZ3RoKCk7CiAgICAgZmxvYXQmIG51bWJlcigpOworICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBw
YXRoKCk7CiAgICAgU1ZHUG9pbnRMaXN0JiBwb2ludExpc3QoKTsKICAgICBGbG9hdFJlY3QmIHJl
Y3QoKTsKICAgICBTdHJpbmcmIHN0cmluZygpOwpAQCAtNzMsNiArNzgsNyBAQCBwcml2YXRlOgog
ICAgICAgICBDb2xvciogY29sb3I7CiAgICAgICAgIFNWR0xlbmd0aCogbGVuZ3RoOwogICAgICAg
ICBmbG9hdCogbnVtYmVyOworICAgICAgICBTVkdQYXRoQnl0ZVN0cmVhbSogcGF0aDsKICAgICAg
ICAgU1ZHUG9pbnRMaXN0KiBwb2ludExpc3Q7CiAgICAgICAgIEZsb2F0UmVjdCogcmVjdDsKICAg
ICAgICAgU3RyaW5nKiBzdHJpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
b3JGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9y
RmFjdG9yeS5oCShyZXZpc2lvbiA4OTY2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRvckZhY3RvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IlNWR0FuaW1hdGVkQ29sb3IuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQYXRoLmgi
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZFJlY3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgpAQCAtNTAsNiArNTEsOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTGVu
Z3RoQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAg
Y2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZH
QW5pbWF0ZWROdW1iZXJBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkp
OworICAgICAgICBjYXNlIEFuaW1hdGVkUGF0aDoKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVs
ZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKICAgICAgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcihhbmltYXRpb25FbGVt
ZW50LCBjb250ZXh0RWxlbWVudCkpOwogICAgICAgICBjYXNlIEFuaW1hdGVkUmVjdDoKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCShyZXZpc2lvbiA4OTY2MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw2ICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFNWR1BhdGhCeXRlU3RyZWFtKG1fZGF0YSkpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGNv
cHkoU1ZHUGF0aEJ5dGVTdHJlYW0qIGJ5dGVTdHJlYW0pCisgICAgeworICAgICAgICBtX2RhdGEg
PSBieXRlU3RyZWFtLT5tX2RhdGE7CisgICAgfQogCiAgICAgdHlwZWRlZiBWZWN0b3I8dW5zaWdu
ZWQgY2hhcj4gRGF0YTsKICAgICB0eXBlZGVmIERhdGE6OmNvbnN0X2l0ZXJhdG9yIERhdGFJdGVy
YXRvcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98592</attachid>
            <date>2011-06-25 10:15:10 -0700</date>
            <delta_ts>2011-06-25 10:32:39 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>SVGAnimatedPatch.diff</filename>
            <type>text/plain</type>
            <size>32472</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NzQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDYtMjUgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBTVkdQYXRoIHRvIFNWR0FuaW1hdG9y
RmFjdG9yeSBjb25jZXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MzMzNgorCisgICAgICAgIENvbnZlcnQgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0i
ZCI+IHBhcnNpbmcgdG8gdGhlIG5ldyBTVkdBbmltYXRvckZhY3RvcnkgY29uY2VwdCwgcmVtb3Zp
bmcKKyAgICAgICAgdGhlIGxhc3Qgc3BlY2lhbCBkYXRhIHR5cGVzIGZyb20gU1ZHQW5pbWF0ZUVs
ZW1lbnQ6IFNWR1BhdGhCeXRlU3RyZWFtIG1fZnJvbVBhdGgvbV90b1BhdGgvbV9hbmltYXRlZFBh
dGguCisgICAgICAgIEFsbCBleGlzdGluZyBub24tc3RyaW5nIHByaW1pdGl2ZXMgaGF2ZSBiZWVu
IGNvbnZlcnRlZCB0byB0aGUgbmV3IGNvbmNlcHQuCisKKyAgICAgICAgRG9lc24ndCBjaGFuZ2Ug
YW55IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgU1ZH
QW5pbWF0ZWRQYXRoLiouCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisg
ICAgICAgICogV2ViQ29yZS5wcm86IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbGxJbk9uZS5jcHA6IERpdHRvLgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlRWxlbWVudDo6U1ZHQW5pbWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1Rh
cmdldCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkUGF0aC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRQYXRoQW5pbWF0b3I6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9W
YWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNhbGN1
bGF0ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBhdGhB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZFBhdGguaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBh
dGhBbmltYXRvcjo6flNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6flNW
R0FuaW1hdGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0
ZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpwYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6dmFsdWVBc1N0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcpOgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRlZFR5cGUuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSk6CisgICAgICAg
ICogc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0
ZVN0cmVhbTo6aW5pdGlhbGl6ZUZyb20pOgorICAgICAgICAqIHN2Zy9TVkdQYXRoUGFyc2VyRmFj
dG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRT
VkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmJ1aWxkQW5pbWF0ZWRTVkdQ
YXRoQnl0ZVN0cmVhbSk6CisKIDIwMTEtMDYtMjQgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA4OTczMikKKysrIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjU5LDYgKzE2NTksNyBAQCBJRiAoRU5B
QkxFX1NWRykKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCiAgICAgICAgIHN2Zy9T
VkdBbmltYXRlZExlbmd0aC5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcAor
ICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRQ
b2ludExpc3QuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFJlY3QuY3BwCiAgICAgICAgIHN2
Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkocmV2aXNpb24gODk3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDMzLDYgKzM0MzMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWROdW1iZXJMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBh
dGguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9u
IDg5NzMyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAg
LTIzMzQsNiArMjMzNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHN2Zy9TVkdBbmltYXRlZExlbmd0
aExpc3QuaCBcCiAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmggXAogICAgIHN2Zy9TVkdBbmlt
YXRlZE51bWJlckxpc3QuaCBcCisgICAgc3ZnL1NWR0FuaW1hdGVkUGF0aC5oIFwKICAgICBzdmcv
U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggXAogICAgIHN2Zy9TVkdBbmltYXRlZFBv
aW50TGlzdC5oIFwKICAgICBzdmcvU1ZHQW5pbWF0ZWRSZWN0LmggXApAQCAtMzMzNyw2ICszMzM4
LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAgICAgICAgICAgIHN2
Zy9TVkdBbmltYXRlZENvbG9yLmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZExl
bmd0aC5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIFwKKyAg
ICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAgXAogICAgICAgICAgICAgICBzdmcv
U1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVk
UmVjdC5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiA4OTczMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NTM5OCw2ICs2NTM5OCwxMCBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZWRQYXRo
LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2
Z1xTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCIKIAkJCQk+CiAJCQk8L0ZpbGU+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA4OTczMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw3IEBACiAJCTA4
NUI5MkJBMEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1QjkyQjgwRUZERTczRDAwRTYx
MjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi87IH07CiAJCTA4NUI5MkJCMEVGREU3M0QwMEU2
MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4NUI5MkI5MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkwODVDRDI3NTEz
OEJCOEUwMDA5MDdGMkQgLyogU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NUNEMjc0MTM4QkI4RTAwMDkw
N0YyRCAvKiBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oICovOyB9OworCQkwODYzOTUxNjEz
QjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODYzOTUxNDEzQjVGRTU3MDBCQjM0NEQgLyogU1ZH
QW5pbWF0ZWRQYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZS5jcHAgKi87IH07CiAJCTA4NjQxRDQ4MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDg2QkJEMEYxMzYwMzlDMjAwOEIxNUQ4IC8qIEdseXBoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODZCQkQwRTEzNjAzOUMyMDA4QjE1
RDggLyogR2x5cGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTQ3LDYgKzE0OCw3IEBACiAJCTA4QTQ4QTZFMEU4NkNGNkQwMEUyMjVERCAvKiBK
U1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEE0OEE2RDBFODZDRjZEMDBFMjI1REQgLyogSlNTVkdFbGVt
ZW50SW5zdGFuY2VDdXN0b20uY3BwICovOyB9OwogCQkwOEIzNUIxMzEyN0I2QTdDMDA1MzE0REQg
LyogU1ZHQW5pbWF0ZWROdW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4QjM1QjEyMTI3QjZBN0MwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4
QjM1QjE3MTI3QjZBODgwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4QjM1QjE2MTI3QjZBODgw
MDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwOEI1RjI1NTEzQjVGRkYyMDAyOTU5RUMgLyog
U1ZHQW5pbWF0ZWRQYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4NjM5NTEzMTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguY3Bw
ICovOyB9OwogCQkwOEM3MTM2RTEyODk1NkEzMDAxQjEwN0UgLyogU1ZHVHJhbnNmb3JtTGlzdFBy
b3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDhDNzEzNkQxMjg5NTZBMzAwMUIxMDdFIC8qIFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0
eVRlYXJPZmYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwOEM3QTJDNzEwREM3NDYyMDAyRDM2OEIgLyogU1ZHTmFtZXMuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUU5
MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5oICovOyB9OwogCQkwOEM4NTlDMDEyNzQ1NzU0
MDBBNTcyOEQgLyogU1ZHQW5pbWF0ZWRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM4NTlCRjEyNzQ1NzUzMDBBNTcyOEQgLyogU1ZHQW5pbWF0
ZWRSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTY0NzYsNiArNjQ3OCw4IEBACiAJCTA4NUI5MkI4MEVGREU3M0QwMEU2MTIzQyAvKiBGb3Jt
RGF0YUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9y
bURhdGFCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1QjkyQjkw
RUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDg1Q0QyNzQxMzhCQjhFMDAwOTA3RjJEIC8qIFNWR1RleHRSdW5SZW5kZXJpbmdDb250
ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRSdW5SZW5kZXJp
bmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NjM5NTEzMTNCNUZF
NTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDg2Mzk1MTQxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFBhdGguaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2NDFENDUxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4NkJCRDBFMTM2MDM5QzIwMDhCMTVEOCAvKiBHbHlwaC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHbHlwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTc0MDEsNiArMTc0MDUsOCBAQAogCQkJCUIyMjI3N0VDMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdB
bmltYXRlZE51bWJlci5pZGwgKi8sCiAJCQkJMDhCMzVCMTYxMjdCNkE4ODAwNTMxNEREIC8qIFNW
R0FuaW1hdGVkTnVtYmVyTGlzdC5oICovLAogCQkJCUIyMjI3N0VEMEQwMEJGMUYwMDcxQjc4MiAv
KiBTVkdBbmltYXRlZE51bWJlckxpc3QuaWRsICovLAorCQkJCTA4NjM5NTEzMTNCNUZFNTcwMEJC
MzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguY3BwICovLAorCQkJCTA4NjM5NTE0MTNCNUZFNTcwMEJC
MzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguaCAqLywKIAkJCQk0M0I5MzM2NzEzQjI2MUIxMDA0NTg0
QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCAqLywKIAkJCQk0M0I5MzM2ODEzQjI2MUIxMDA0
NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwICovLAogCQkJCTA4RkUwQkM0MTI3RTJB
QzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCAqLywKQEAgLTIz
MDUzLDYgKzIzMDU5LDcgQEAKIAkJCQk0M0I5MzM2OTEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5p
bWF0ZWRQb2ludExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzQTYyNUY4MTNCMzMwNDAwMEFD
OTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODc1NThDNjEz
QjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwODYzOTUxNjEzQjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRo
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1ODE1LDYgKzI1ODIyLDcgQEAKIAkJCQk0M0E2MjVGOTEz
QjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0M0E2MjY2NzEzQjNEMTEwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDg3NTU4QzUxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJB
d2FyZVRleHRJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwOEI1RjI1NTEzQjVGRkYy
MDAyOTU5RUMgLyogU1ZHQW5pbWF0ZWRQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA4OTczMikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExl
bmd0aC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIgorI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUGF0aC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIgog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkUmVjdC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJp
bmcuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA4OTczMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDYgQEAgU1ZHQW5pbWF0ZUVsZW1lbnQ6OlNW
R0FuaW1hdGVFbGVtZW50KGNvbgogICAgICwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUoQW5pbWF0
ZWRTdHJpbmcpCiAgICAgLCBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZShSZWd1bGFyUHJvcGVydHlW
YWx1ZSkKICAgICAsIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZShSZWd1bGFyUHJvcGVydHlWYWx1ZSkK
LSAgICAsIG1fYW5pbWF0ZWRQYXRoUG9pbnRlcigwKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpIHx8
IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykpOwogfQpAQCAtMTQ3LDcgKzE0
Niw2IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGUKIHsKICAgICBB
U1NFUlQocGVyY2VudGFnZSA+PSAwICYmIHBlcmNlbnRhZ2UgPD0gMSk7CiAgICAgQVNTRVJUKHJl
c3VsdEVsZW1lbnQpOwotICAgIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSA9IHRoaXMtPmFu
aW1hdGlvbk1vZGUoKTsKICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFy
Z2V0RWxlbWVudCgpOwogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTYyLDQzICsxNjAsMTEgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5p
bWF0ZQogICAgIGlmIChyZXN1bHRzLT5tX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9PSBBbmltYXRl
ZFN0cmluZyAmJiBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSAhPSBBbmltYXRlZFN0cmluZykKICAg
ICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKLSAg
ICBjYXNlIEFuaW1hdGVkUGF0aDogewotICAgICAgICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBUb0Fu
aW1hdGlvbikgewotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoUG9p
bnRlcik7Ci0gICAgICAgICAgICBtX2Zyb21QYXRoID0gcmVzdWx0cy0+bV9hbmltYXRlZFBhdGhQ
b2ludGVyLT5jb3B5KCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwZXJjZW50YWdlKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQobV9mcm9tUGF0aCk7Ci0gICAgICAgICAgICBBU1NFUlQocGVyY2Vu
dGFnZSA+PSAwKTsKLSAgICAgICAgICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoUG9pbnRlciA9
IG1fZnJvbVBhdGguZ2V0KCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocGVyY2VudGFnZSA9PSAxKSB7
Ci0gICAgICAgICAgICBBU1NFUlQobV90b1BhdGgpOwotICAgICAgICAgICAgcmVzdWx0cy0+bV9h
bmltYXRlZFBhdGhQb2ludGVyID0gbV90b1BhdGguZ2V0KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBpZiAobV9mcm9tUGF0aCAmJiBtX3RvUGF0aCkgewotICAgICAgICAgICAgICAg
IFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNl
bGYoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWZhY3RvcnktPmJ1aWxkQW5pbWF0ZWRTVkdQYXRo
Qnl0ZVN0cmVhbShtX2Zyb21QYXRoLmdldCgpLCBtX3RvUGF0aC5nZXQoKSwgcmVzdWx0cy0+bV9h
bmltYXRlZFBhdGgsIHBlcmNlbnRhZ2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMt
Pm1fYW5pbWF0ZWRQYXRoLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMtPm1f
YW5pbWF0ZWRQYXRoUG9pbnRlciA9IDA7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoUG9pbnRlciA9IHJlc3VsdHMtPm1f
YW5pbWF0ZWRQYXRoLmdldCgpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
cmVzdWx0cy0+bV9hbmltYXRlZFBhdGhQb2ludGVyID0gMDsKLSAgICAgICAgICAgIC8vIEZhbGwg
YmFjayB0byBkaXNjcmV0ZSBhbmltYXRpb24gaWYgdGhlIHBhdGhzIGFyZSBub3QgY29tcGF0aWJs
ZQotICAgICAgICAgICAgaWYgKCFyZXN1bHRzLT5tX2FuaW1hdGVkUGF0aFBvaW50ZXIpIHsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQobV9mcm9tUGF0aCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KG1fdG9QYXRoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIXJlc3VsdHMtPm1fYW5pbWF0ZWRQ
YXRoKTsKLSAgICAgICAgICAgICAgICByZXN1bHRzLT5tX2FuaW1hdGVkUGF0aFBvaW50ZXIgPSAo
KGFuaW1hdGlvbk1vZGUgPT0gRnJvbVRvQW5pbWF0aW9uICYmIHBlcmNlbnRhZ2UgPiAwLjVmKSB8
fCBhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0gMSkgCi0gICAg
ICAgICAgICAgICAgICAgID8gbV90b1BhdGguZ2V0KCkgOiBtX2Zyb21QYXRoLmdldCgpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgY2FzZSBB
bmltYXRlZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICBjYXNlIEFuaW1hdGVk
TGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CisgICAgY2FzZSBBbmltYXRlZFBhdGg6
CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKICAgICBjYXNlIEFuaW1hdGVkUmVjdDoKICAgICBj
YXNlIEFuaW1hdGVkU3RyaW5nOiB7CkBAIC0yNTksMjEgKzIyNSwxMSBAQCBib29sIFNWR0FuaW1h
dGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgLy8gRklYTUU6IE5lZWRzIG1vcmUgc29s
aWQgd2F5IGRldGVybWluZSB0YXJnZXQgYXR0cmlidXRlIHR5cGUuCiAgICAgbV9hbmltYXRlZEF0
dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVu
dCk7CiAgICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgewotICAgIGNhc2UgQW5p
bWF0ZWRQYXRoOiB7Ci0gICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZH
UGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAgICAgICAgaWYgKGZhY3RvcnktPmJ1aWxkU1ZH
UGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKHRvU3RyaW5nLCBtX3RvUGF0aCwgVW5hbHRlcmVkUGFy
c2luZykpIHsKLSAgICAgICAgICAgIC8vIEZvciB0by1hbmltYXRpb25zIHRoZSBmcm9tIG51bWJl
ciBpcyBjYWxjdWxhdGVkIGxhdGVyCi0gICAgICAgICAgICBpZiAoYW5pbWF0aW9uTW9kZSgpID09
IFRvQW5pbWF0aW9uIHx8IGZhY3RvcnktPmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5n
KGZyb21TdHJpbmcsIG1fZnJvbVBhdGgsIFVuYWx0ZXJlZFBhcnNpbmcpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIG1fZnJvbVBhdGguY2xlYXIoKTsK
LSAgICAgICAgbV90b1BhdGguY2xlYXIoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGNh
c2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgY2FzZSBBbmlt
YXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgorICAgIGNhc2UgQW5pbWF0ZWRQ
YXRoOgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAg
ICAgY2FzZSBBbmltYXRlZFN0cmluZzoKQEAgLTMwNCw2ICsyNjAsOSBAQCBib29sIFNWR0FuaW1h
dGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKICAg
ICAgICAgZW5zdXJlQW5pbWF0b3IoKS0+Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKG1fZnJvbVR5
cGUsIG1fdG9UeXBlLCBmcm9tU3RyaW5nLCBieVN0cmluZyk7CiAgICAgICAgIHJldHVybiB0cnVl
OworICAgIGNhc2UgQW5pbWF0ZWRQYXRoOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
Ly8gVGhpcyBzdGF0ZSBpcyBub3QgcmVhY2hhYmxlIGZvciBub3cuCisgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMxNywxNyArMjc2LDExIEBA
IHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUKICAgICBBU1NFUlQodGFy
Z2V0RWxlbWVudCk7CiAgICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmlt
YXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7CiAgICAgc3dpdGNoIChtX2FuaW1hdGVk
QXR0cmlidXRlVHlwZSkgewotICAgIGNhc2UgQW5pbWF0ZWRQYXRoOiB7Ci0gICAgICAgIG1fYW5p
bWF0ZWRQYXRoLmNsZWFyKCk7Ci0gICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5
ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAgICAgICAgZmFjdG9yeS0+YnVpbGRT
VkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoYmFzZVN0cmluZywgbV9hbmltYXRlZFBhdGgsIFVu
YWx0ZXJlZFBhcnNpbmcpOwotICAgICAgICBtX2FuaW1hdGVkUGF0aFBvaW50ZXIgPSBtX2FuaW1h
dGVkUGF0aC5nZXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBjYXNlIEFuaW1hdGVk
QW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6
CiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKKyAgICBjYXNlIEFuaW1hdGVkUGF0aDoKICAgICBj
YXNlIEFuaW1hdGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgogICAgIGNhc2UgQW5p
bWF0ZWRTdHJpbmc6IHsKQEAgLTM0NywyMyArMzAwLDExIEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1l
bnQ6OmFwcGx5UmVzdWx0c1RvVGEKIHsKICAgICBTdHJpbmcgdmFsdWVUb0FwcGx5OwogICAgIHN3
aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKLSAgICBjYXNlIEFuaW1hdGVkUGF0aDog
ewotICAgICAgICBpZiAoIW1fYW5pbWF0ZWRQYXRoUG9pbnRlciB8fCBtX2FuaW1hdGVkUGF0aFBv
aW50ZXItPmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHZhbHVlVG9BcHBseSA9IFN0cmluZygpOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8ga2VlcCBnb2luZyB0byBz
dHJpbmcgYW5kIGJhY2sgYmVjYXVzZSB3ZSBhcmUgY3VycmVudGx5IG9ubHkgYWJsZSB0byBwYWlu
dAotICAgICAgICAgICAgLy8gInByb2Nlc3NlZCIgcGF0aHMgd2hlcmUgY29tcGxleCBzaGFwZXMg
YXJlIHJlcGxhY2VkIHdpdGggc2ltcGxlciBvbmVzLiBQYXRoIAotICAgICAgICAgICAgLy8gbW9y
cGhpbmcgbmVlZHMgdG8gYmUgZG9uZSB3aXRoIHVucHJvY2Vzc2VkIHBhdGhzLgotICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgb3B0aW1pemVkIGlmIHBhdGhzIHdlcmUgbm90IHBy
b2Nlc3NlZCBhdCBwYXJzZSB0aW1lLgotICAgICAgICAgICAgU1ZHUGF0aFBhcnNlckZhY3Rvcnkq
IGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOwotICAgICAgICAgICAgZmFj
dG9yeS0+YnVpbGRTdHJpbmdGcm9tQnl0ZVN0cmVhbShtX2FuaW1hdGVkUGF0aFBvaW50ZXIsIHZh
bHVlVG9BcHBseSwgVW5hbHRlcmVkUGFyc2luZyk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7
Ci0gICAgfQogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6
CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgorICAg
IGNhc2UgQW5pbWF0ZWRQYXRoOgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBB
bmltYXRlZFJlY3Q6CiAgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCShyZXZpc2lvbiA4OTczMikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMSArNzQs
NyBAQCBwcml2YXRlOgogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSBtX2Zyb21Qcm9w
ZXJ0eVZhbHVlVHlwZTsKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0
eVZhbHVlVHlwZTsKLSAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IG1fZnJvbVBhdGg7Ci0g
ICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBtX3RvUGF0aDsKLSAgICBPd25QdHI8U1ZHUGF0
aEJ5dGVTdHJlYW0+IG1fYW5pbWF0ZWRQYXRoOwotICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBtX2Fu
aW1hdGVkUGF0aFBvaW50ZXI7Ci0gICAgCisKICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBt
X2Zyb21UeXBlOwogICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IG1fdG9UeXBlOwogICAgIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+IG1fYW5pbWF0ZWRUeXBlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfQU5JTUFUSU9OKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVkUGF0aC5oIgorCisj
aW5jbHVkZSAiU1ZHQW5pbWF0ZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFj
dG9yeS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NWR0FuaW1hdGVkUGF0aEFuaW1hdG9y
OjpTVkdBbmltYXRlZFBhdGhBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25F
bGVtZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKKyAgICA6IFNWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yKEFuaW1hdGVkUGF0aCwgYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQp
Cit7Cit9CisKK1Bhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFBhdGhBbmlt
YXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBP
d25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IGJ5dGVTdHJlYW0gPSBTVkdQYXRoQnl0ZVN0cmVhbTo6
Y3JlYXRlKCk7CisgICAgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKS0+YnVpbGRTVkdQYXRo
Qnl0ZVN0cmVhbUZyb21TdHJpbmcoc3RyaW5nLCBieXRlU3RyZWFtLCBVbmFsdGVyZWRQYXJzaW5n
KTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQYXRoKGJ5dGVTdHJlYW0ubGVh
a1B0cigpKTsKK30KKwordm9pZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlRnJv
bUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0
b1N0cmluZykKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgQVNTRVJUKG1f
YW5pbWF0aW9uRWxlbWVudCk7CisKKyAgICBTVkdBbmltYXRlRWxlbWVudCogYW5pbWF0aW9uRWxl
bWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmltYXRpb25FbGVtZW50
KTsKKyAgICBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUgPSBhbmltYXRpb25FbGVtZW50LT5h
bmltYXRpb25Nb2RlKCk7CisKKyAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IHRvQnl0ZVN0
cmVhbSA9IFNWR1BhdGhCeXRlU3RyZWFtOjpjcmVhdGUoKTsgICAgCisgICAgYm9vbCBzdWNjZXNz
ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKS0+YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZy
b21TdHJpbmcodG9TdHJpbmcsIHRvQnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAg
dG8gPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBhdGgodG9CeXRlU3RyZWFtLmxlYWtQdHIoKSk7
CisgICAgQVNTRVJUKCF0b0J5dGVTdHJlYW0pOworCisgICAgLy8gRm9yIHRvLWFuaW1hdGlvbnMg
dGhlIGZyb20gbnVtYmVyIGlzIGNhbGN1bGF0ZWQgbGF0ZXIuCisgICAgaWYgKHN1Y2Nlc3MgJiYg
YW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbikgeworICAgICAgICBmcm9tID0gU1ZHQW5pbWF0
ZWRUeXBlOjpjcmVhdGVQYXRoKFNWR1BhdGhCeXRlU3RyZWFtOjpjcmVhdGUoKS5sZWFrUHRyKCkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFt
PiBmcm9tQnl0ZVN0cmVhbSA9IFNWR1BhdGhCeXRlU3RyZWFtOjpjcmVhdGUoKTsKKyAgICBpZiAo
c3VjY2VzcyAmJiBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpLT5idWlsZFNWR1BhdGhCeXRl
U3RyZWFtRnJvbVN0cmluZyhmcm9tU3RyaW5nLCBmcm9tQnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFy
c2luZykpIHsKKyAgICAgICAgZnJvbSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUGF0aChmcm9t
Qnl0ZVN0cmVhbS5sZWFrUHRyKCkpOworICAgICAgICBBU1NFUlQoIWZyb21CeXRlU3RyZWFtKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChmcm9tQnl0ZVN0cmVhbSk7Cisg
ICAgZnJvbSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUGF0aChmcm9tQnl0ZVN0cmVhbS5sZWFr
UHRyKCkpOworfQorCit2b2lkIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9t
QW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mLCBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQsIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiBhbmltYXRlZCkKK3sKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsK
KyAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisKKyAgICBTVkdBbmltYXRlRWxlbWVudCog
YW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmlt
YXRpb25FbGVtZW50KTsKKyAgICBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUgPSBhbmltYXRp
b25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCk7CisKKyAgICBTVkdQYXRoQnl0ZVN0cmVhbSogdG9Q
YXRoID0gdG8tPnBhdGgoKTsKKyAgICBBU1NFUlQodG9QYXRoKTsKKworICAgIFNWR1BhdGhCeXRl
U3RyZWFtKiBmcm9tUGF0aCA9IGZyb20tPnBhdGgoKTsKKyAgICBBU1NFUlQoZnJvbVBhdGgpOwor
CisgICAgU1ZHUGF0aEJ5dGVTdHJlYW0qIGFuaW1hdGVkUGF0aCA9IGFuaW1hdGVkLT5wYXRoKCk7
CisgICAgQVNTRVJUKGFuaW1hdGVkUGF0aCk7CisKKyAgICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBU
b0FuaW1hdGlvbikKKyAgICAgICAgZnJvbVBhdGgtPmluaXRpYWxpemVGcm9tKGFuaW1hdGVkUGF0
aCk7CisKKyAgICBpZiAoIXBlcmNlbnRhZ2UpIHsKKyAgICAgICAgQVNTRVJUKHBlcmNlbnRhZ2Ug
Pj0gMCk7CisgICAgICAgIGFuaW1hdGVkUGF0aC0+aW5pdGlhbGl6ZUZyb20oZnJvbVBhdGgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHBlcmNlbnRhZ2UgPT0gMSkgeworICAg
ICAgICBhbmltYXRlZFBhdGgtPmluaXRpYWxpemVGcm9tKHRvUGF0aCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IG5ld0FuaW1hdGVkUGF0
aCA9IGFkb3B0UHRyKGFuaW1hdGVkUGF0aCk7CisgICAgYm9vbCBzdWNjZXNzID0gU1ZHUGF0aFBh
cnNlckZhY3Rvcnk6OnNlbGYoKS0+YnVpbGRBbmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKGZyb21Q
YXRoLCB0b1BhdGgsIG5ld0FuaW1hdGVkUGF0aCwgcGVyY2VudGFnZSk7CisgICAgYW5pbWF0ZWRQ
YXRoID0gbmV3QW5pbWF0ZWRQYXRoLmxlYWtQdHIoKTsKKyAgICBpZiAoc3VjY2VzcykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKChhbmltYXRpb25Nb2RlID09IEZyb21Ub0FuaW1hdGlvbiAm
JiBwZXJjZW50YWdlID4gMC41KSB8fCBhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uIHx8IHBl
cmNlbnRhZ2UgPT0gMSkgCisgICAgICAgIGFuaW1hdGVkUGF0aC0+aW5pdGlhbGl6ZUZyb20odG9Q
YXRoKTsKKyAgICBlbHNlCisgICAgICAgIGFuaW1hdGVkUGF0aC0+aW5pdGlhbGl6ZUZyb20oZnJv
bVBhdGgpOworfQorICAgCitmbG9hdCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRl
RGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBObyBwYWNl
ZCBhbmltYXRpb25zIGZvciBzdHJpbmdzLgorICAgIHJldHVybiAtMTsKK30KKworfQorCisjZW5k
aWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUGF0aC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaWZuZGVmIFNWR0FuaW1hdGVkUGF0aF9oCisjZGVmaW5lIFNWR0FuaW1h
dGVkUGF0aF9oCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKKyNp
bmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CisKK2NsYXNzIFNWR0FuaW1hdGVkUGF0aEFu
aW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKKyAgICAKK3B1YmxpYzoK
KyAgICBTVkdBbmltYXRlZFBhdGhBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxl
bWVudCopOworICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yKCkgeyB9CisKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5n
KGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1Zh
bHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRvU3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+
JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJp
bmcpOworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNl
bnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxT
VkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0
ZWRWYWx1ZSk7CisgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklN
QVRJT04pCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3Bw
CShyZXZpc2lvbiA4OTczMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU1ZHQ29sb3Iu
aCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMu
aCIKKyNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNWR1BvaW50
TGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw2ICs1Miw5IEBAIFNWR0FuaW1h
dGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSgpCiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAg
ICAgICAgZGVsZXRlIG1fZGF0YS5udW1iZXI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5p
bWF0ZWRQYXRoOgorICAgICAgICBkZWxldGUgbV9kYXRhLnBhdGg7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgICAgIGRlbGV0ZSBtX2RhdGEucG9pbnRMaXN0
OwogICAgICAgICBicmVhazsKQEAgLTk4LDYgKzEwMiwxNCBAQCBQYXNzT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4gU1ZHQW5pbWF0ZWRUCiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7
CiB9CiAKK1Bhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0
ZVBhdGgoU1ZHUGF0aEJ5dGVTdHJlYW0qIHBhdGgpCit7CisgICAgQVNTRVJUKHBhdGgpOworICAg
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBTVkdB
bmltYXRlZFR5cGUoQW5pbWF0ZWRQYXRoKSk7CisgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEucGF0
aCA9IHBhdGg7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisKIFBhc3NP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBvaW50TGlzdChT
VkdQb2ludExpc3QqIHBvaW50TGlzdCkKIHsKICAgICBBU1NFUlQocG9pbnRMaXN0KTsKQEAgLTE0
Niw2ICsxNTgsMTIgQEAgZmxvYXQmIFNWR0FuaW1hdGVkVHlwZTo6bnVtYmVyKCkKICAgICByZXR1
cm4gKm1fZGF0YS5udW1iZXI7CiB9CiAKK1NWR1BhdGhCeXRlU3RyZWFtKiBTVkdBbmltYXRlZFR5
cGU6OnBhdGgoKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRQYXRoKTsKKyAgICBy
ZXR1cm4gbV9kYXRhLnBhdGg7Cit9CisKIFNWR1BvaW50TGlzdCYgU1ZHQW5pbWF0ZWRUeXBlOjpw
b2ludExpc3QoKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRQb2ludHMpOwpAQCAt
MTc5LDYgKzE5NywxMiBAQCBTdHJpbmcgU1ZHQW5pbWF0ZWRUeXBlOjp2YWx1ZUFzU3RyaW5nKCkK
ICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgogICAgICAgICBBU1NFUlQobV9kYXRhLm51bWJlcik7
CiAgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcigqbV9kYXRhLm51bWJlcik7CisgICAgY2Fz
ZSBBbmltYXRlZFBhdGg6IHsKKyAgICAgICAgQVNTRVJUKG1fZGF0YS5wYXRoKTsKKyAgICAgICAg
U3RyaW5nIHJlc3VsdDsKKyAgICAgICAgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKS0+YnVp
bGRTdHJpbmdGcm9tQnl0ZVN0cmVhbShtX2RhdGEucGF0aCwgcmVzdWx0LCBVbmFsdGVyZWRQYXJz
aW5nKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAgY2FzZSBBbmltYXRlZFBv
aW50czoKICAgICAgICAgQVNTRVJUKG1fZGF0YS5wb2ludExpc3QpOwogICAgICAgICByZXR1cm4g
bV9kYXRhLnBvaW50TGlzdC0+dmFsdWVBc1N0cmluZygpOwpAQCAtMjE2LDYgKzI0MCwxNSBAQCBi
b29sIFNWR0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVBc1N0cmluZyhjCiAgICAgICAgIEFTU0VSVCht
X2RhdGEubnVtYmVyKTsKICAgICAgICAgcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHZhbHVlLCAqbV9k
YXRhLm51bWJlcik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWRQYXRoOiB7Cisg
ICAgICAgIEFTU0VSVChtX2RhdGEucGF0aCk7CisgICAgICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0
cmVhbT4gcGF0aEJ5dGVTdHJlYW0gPSBhZG9wdFB0cihtX2RhdGEucGF0aCk7CisgICAgICAgIHBh
dGhCeXRlU3RyZWFtLT5jbGVhcigpOworICAgICAgICBpZiAoIVNWR1BhdGhQYXJzZXJGYWN0b3J5
OjpzZWxmKCktPmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKHZhbHVlLCBwYXRoQnl0
ZVN0cmVhbSwgVW5hbHRlcmVkUGFyc2luZykpCisgICAgICAgICAgICBlYyA9IDE7IC8vIEFyYml0
YXJ5IHZhbHVlID4gMCwgaXQgZG9lc24ndCBtYXR0ZXIgYXMgd2UgZG9uJ3QgcmVwb3J0IHRoZSBl
eGNlcHRpb24gY29kZS4KKyAgICAgICAgbV9kYXRhLnBhdGggPSBwYXRoQnl0ZVN0cmVhbS5sZWFr
UHRyKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgog
ICAgICAgICBBU1NFUlQobV9kYXRhLnBvaW50TGlzdCk7CiAgICAgICAgIG1fZGF0YS5wb2ludExp
c3QtPmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCShyZXZp
c2lvbiA4OTczMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQCBjbGFzcyBDb2xvcjsKIGNsYXNzIEZsb2F0UmVj
dDsKIGNsYXNzIFNWR0FuZ2xlOwogY2xhc3MgU1ZHTGVuZ3RoOworY2xhc3MgU1ZHUGF0aEJ5dGVT
dHJlYW07CiBjbGFzcyBTVkdQb2ludExpc3Q7CiAKIGNsYXNzIFNWR0FuaW1hdGVkVHlwZSB7CkBA
IC00MCw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IGNyZWF0ZUNvbG9yKENvbG9yKik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKik7CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVOdW1iZXIoZmxvYXQqKTsKKyAgICBzdGF0aWMgUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVBhdGgoU1ZHUGF0aEJ5dGVTdHJlYW0qKTsK
ICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVBvaW50TGlzdChT
VkdQb2ludExpc3QqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNy
ZWF0ZVJlY3QoRmxvYXRSZWN0Kik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBjcmVhdGVTdHJpbmcoU3RyaW5nKik7CkBAIC01MCw2ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICBDb2xvciYgY29sb3IoKTsKICAgICBTVkdMZW5ndGgmIGxlbmd0aCgpOwogICAgIGZsb2F0JiBu
dW1iZXIoKTsKKyAgICBTVkdQYXRoQnl0ZVN0cmVhbSogcGF0aCgpOwogICAgIFNWR1BvaW50TGlz
dCYgcG9pbnRMaXN0KCk7CiAgICAgRmxvYXRSZWN0JiByZWN0KCk7CiAgICAgU3RyaW5nJiBzdHJp
bmcoKTsKQEAgLTczLDYgKzc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ29sb3IqIGNvbG9yOwog
ICAgICAgICBTVkdMZW5ndGgqIGxlbmd0aDsKICAgICAgICAgZmxvYXQqIG51bWJlcjsKKyAgICAg
ICAgU1ZHUGF0aEJ5dGVTdHJlYW0qIHBhdGg7CiAgICAgICAgIFNWR1BvaW50TGlzdCogcG9pbnRM
aXN0OwogICAgICAgICBGbG9hdFJlY3QqIHJlY3Q7CiAgICAgICAgIFN0cmluZyogc3RyaW5nOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAkocmV2aXNpb24gODk3
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJl
ci5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkUGF0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVk
UG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRTdHJpbmcuaCIKQEAgLTUwLDYgKzUxLDggQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yKGFuaW1hdGlvbkVs
ZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAg
ICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3Io
YW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAgY2FzZSBBbmltYXRl
ZFBhdGg6CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkUGF0aEFu
aW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2Ug
QW5pbWF0ZWRQb2ludHM6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1h
dGVkUG9pbnRMaXN0QW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsK
ICAgICAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aEJ5dGVTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEJ5dGVTdHJlYW0uaAkocmV2aXNpb24gODk3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aEJ5dGVTdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsMTIgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR1BhdGhCeXRlU3RyZWFtKG1fZGF0YSkp
OwogICAgIH0KIAorICAgIHZvaWQgaW5pdGlhbGl6ZUZyb20oU1ZHUGF0aEJ5dGVTdHJlYW0qIG90
aGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG90aGVyKTsKKyAgICAgICAgbV9kYXRhID0gb3Ro
ZXItPm1fZGF0YTsKKyAgICB9CisKICAgICB0eXBlZGVmIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBE
YXRhOwogICAgIHR5cGVkZWYgRGF0YTo6Y29uc3RfaXRlcmF0b3IgRGF0YUl0ZXJhdG9yOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAJKHJldmlz
aW9uIDg5NzMyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDcgKzE0MiwxMSBAQCBib29sIFNWR1BhdGhQYXJzZXJG
YWN0b3J5OjpidWlsZFBhdGhGcm9tCiAKIGJvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmJ1aWxk
U1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xpc3Qm
IGxpc3QsIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4mIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2Rl
IHBhcnNpbmdNb2RlKQogewotICAgIHJlc3VsdCA9IFNWR1BhdGhCeXRlU3RyZWFtOjpjcmVhdGUo
KTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXN1bHQtPmNsZWFyKCk7CisgICAgZWxzZQor
ICAgICAgICByZXN1bHQgPSBTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCk7CisKICAgICBpZiAo
bGlzdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjE5LDcgKzIyMywx
MSBAQCBib29sIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpidWlsZFN0cmluZ0ZyCiAKIGJvb2wgU1ZH
UGF0aFBhcnNlckZhY3Rvcnk6OmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgZCwgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtPiYgcmVzdWx0LCBQYXRoUGFyc2lu
Z01vZGUgcGFyc2luZ01vZGUpCiB7Ci0gICAgcmVzdWx0ID0gU1ZHUGF0aEJ5dGVTdHJlYW06OmNy
ZWF0ZSgpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJlc3VsdC0+Y2xlYXIoKTsKKyAgICBl
bHNlCisgICAgICAgIHJlc3VsdCA9IFNWR1BhdGhCeXRlU3RyZWFtOjpjcmVhdGUoKTsKKwogICAg
IGlmIChkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yMzYsNyArMjQ0
LDExIEBAIGJvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmJ1aWxkQW5pbWF0ZWQKIHsKICAgICBB
U1NFUlQoZnJvbVN0cmVhbSk7CiAgICAgQVNTRVJUKHRvU3RyZWFtKTsKLSAgICByZXN1bHQgPSBT
VkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmVz
dWx0LT5jbGVhcigpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gU1ZHUGF0aEJ5dGVTdHJl
YW06OmNyZWF0ZSgpOworCiAgICAgaWYgKGZyb21TdHJlYW0tPmlzRW1wdHkoKSB8fCB0b1N0cmVh
bS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98595</attachid>
            <date>2011-06-25 10:32:39 -0700</date>
            <delta_ts>2011-06-25 14:07:54 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>SVGAnimatedPatch-v2.diff</filename>
            <type>text/plain</type>
            <size>32764</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NzQzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDYtMjUgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBTVkdQYXRoIHRvIFNWR0FuaW1hdG9y
RmFjdG9yeSBjb25jZXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MzMzNgorCisgICAgICAgIENvbnZlcnQgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0i
ZCI+IHBhcnNpbmcgdG8gdGhlIG5ldyBTVkdBbmltYXRvckZhY3RvcnkgY29uY2VwdCwgcmVtb3Zp
bmcKKyAgICAgICAgdGhlIGxhc3Qgc3BlY2lhbCBkYXRhIHR5cGVzIGZyb20gU1ZHQW5pbWF0ZUVs
ZW1lbnQ6IFNWR1BhdGhCeXRlU3RyZWFtIG1fZnJvbVBhdGgvbV90b1BhdGgvbV9hbmltYXRlZFBh
dGguCisgICAgICAgIEFsbCBleGlzdGluZyBub24tc3RyaW5nIHByaW1pdGl2ZXMgaGF2ZSBiZWVu
IGNvbnZlcnRlZCB0byB0aGUgbmV3IGNvbmNlcHQuCisKKyAgICAgICAgRG9lc24ndCBjaGFuZ2Ug
YW55IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgU1ZH
QW5pbWF0ZWRQYXRoLiouCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisg
ICAgICAgICogV2ViQ29yZS5wcm86IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbGxJbk9uZS5jcHA6IERpdHRvLgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlRWxlbWVudDo6U1ZHQW5pbWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1Rh
cmdldCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkUGF0aC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRQYXRoQW5pbWF0b3I6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9W
YWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNhbGN1
bGF0ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBhdGhB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZFBhdGguaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBh
dGhBbmltYXRvcjo6flNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6flNW
R0FuaW1hdGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0
ZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpwYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6dmFsdWVBc1N0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcpOgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRlZFR5cGUuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSk6CisgICAgICAg
ICogc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0
ZVN0cmVhbTo6aW5pdGlhbGl6ZUZyb20pOgorICAgICAgICAqIHN2Zy9TVkdQYXRoUGFyc2VyRmFj
dG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRT
VkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmJ1aWxkQW5pbWF0ZWRTVkdQ
YXRoQnl0ZVN0cmVhbSk6CisKIDIwMTEtMDYtMjQgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA4OTc0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjYwLDYgKzE2NjAsNyBAQCBJRiAoRU5B
QkxFX1NWRykKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCiAgICAgICAgIHN2Zy9T
VkdBbmltYXRlZExlbmd0aC5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcAor
ICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRQ
b2ludExpc3QuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFJlY3QuY3BwCiAgICAgICAgIHN2
Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkocmV2aXNpb24gODk3NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDM0LDYgKzM0MzQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWROdW1iZXJMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBh
dGguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9u
IDg5NzQzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAg
LTIzMzUsNiArMjMzNSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHN2Zy9TVkdBbmltYXRlZExlbmd0
aExpc3QuaCBcCiAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmggXAogICAgIHN2Zy9TVkdBbmlt
YXRlZE51bWJlckxpc3QuaCBcCisgICAgc3ZnL1NWR0FuaW1hdGVkUGF0aC5oIFwKICAgICBzdmcv
U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggXAogICAgIHN2Zy9TVkdBbmltYXRlZFBv
aW50TGlzdC5oIFwKICAgICBzdmcvU1ZHQW5pbWF0ZWRSZWN0LmggXApAQCAtMzMzOCw2ICszMzM5
LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAgICAgICAgICAgIHN2
Zy9TVkdBbmltYXRlZENvbG9yLmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZExl
bmd0aC5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIFwKKyAg
ICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAgXAogICAgICAgICAgICAgICBzdmcv
U1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVk
UmVjdC5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiA4OTc0MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NTQwMiw2ICs2NTQwMiwxMCBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHQW5pbWF0ZWRQYXRo
LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2
Z1xTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCIKIAkJCQk+CiAJCQk8L0ZpbGU+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA4OTc0MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw3IEBACiAJCTA4
NUI5MkJBMEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1QjkyQjgwRUZERTczRDAwRTYx
MjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi87IH07CiAJCTA4NUI5MkJCMEVGREU3M0QwMEU2
MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4NUI5MkI5MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkwODVDRDI3NTEz
OEJCOEUwMDA5MDdGMkQgLyogU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NUNEMjc0MTM4QkI4RTAwMDkw
N0YyRCAvKiBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oICovOyB9OworCQkwODYzOTUxNjEz
QjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODYzOTUxNDEzQjVGRTU3MDBCQjM0NEQgLyogU1ZH
QW5pbWF0ZWRQYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDg2NDFENDcxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZS5jcHAgKi87IH07CiAJCTA4NjQxRDQ4MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDg2QkJEMEYxMzYwMzlDMjAwOEIxNUQ4IC8qIEdseXBoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODZCQkQwRTEzNjAzOUMyMDA4QjE1
RDggLyogR2x5cGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTQ3LDYgKzE0OCw3IEBACiAJCTA4QTQ4QTZFMEU4NkNGNkQwMEUyMjVERCAvKiBK
U1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEE0OEE2RDBFODZDRjZEMDBFMjI1REQgLyogSlNTVkdFbGVt
ZW50SW5zdGFuY2VDdXN0b20uY3BwICovOyB9OwogCQkwOEIzNUIxMzEyN0I2QTdDMDA1MzE0REQg
LyogU1ZHQW5pbWF0ZWROdW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4QjM1QjEyMTI3QjZBN0MwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4
QjM1QjE3MTI3QjZBODgwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4QjM1QjE2MTI3QjZBODgw
MDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwOEI1RjI1NTEzQjVGRkYyMDAyOTU5RUMgLyog
U1ZHQW5pbWF0ZWRQYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4NjM5NTEzMTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguY3Bw
ICovOyB9OwogCQkwOEM3MTM2RTEyODk1NkEzMDAxQjEwN0UgLyogU1ZHVHJhbnNmb3JtTGlzdFBy
b3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDhDNzEzNkQxMjg5NTZBMzAwMUIxMDdFIC8qIFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0
eVRlYXJPZmYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwOEM3QTJDNzEwREM3NDYyMDAyRDM2OEIgLyogU1ZHTmFtZXMuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUU5
MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5oICovOyB9OwogCQkwOEM4NTlDMDEyNzQ1NzU0
MDBBNTcyOEQgLyogU1ZHQW5pbWF0ZWRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM4NTlCRjEyNzQ1NzUzMDBBNTcyOEQgLyogU1ZHQW5pbWF0
ZWRSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTY0NzcsNiArNjQ3OSw4IEBACiAJCTA4NUI5MkI4MEVGREU3M0QwMEU2MTIzQyAvKiBGb3Jt
RGF0YUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9y
bURhdGFCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1QjkyQjkw
RUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDg1Q0QyNzQxMzhCQjhFMDAwOTA3RjJEIC8qIFNWR1RleHRSdW5SZW5kZXJpbmdDb250
ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRSdW5SZW5kZXJp
bmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4NjM5NTEzMTNCNUZF
NTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDg2Mzk1MTQxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFBhdGguaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2NDFENDUxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdl
UmVzb3VyY2VTdHlsZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4NkJCRDBFMTM2MDM5QzIwMDhCMTVEOCAvKiBHbHlwaC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHbHlwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTc0MDMsNiArMTc0MDcsOCBAQAogCQkJCUIyMjI3N0VDMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdB
bmltYXRlZE51bWJlci5pZGwgKi8sCiAJCQkJMDhCMzVCMTYxMjdCNkE4ODAwNTMxNEREIC8qIFNW
R0FuaW1hdGVkTnVtYmVyTGlzdC5oICovLAogCQkJCUIyMjI3N0VEMEQwMEJGMUYwMDcxQjc4MiAv
KiBTVkdBbmltYXRlZE51bWJlckxpc3QuaWRsICovLAorCQkJCTA4NjM5NTEzMTNCNUZFNTcwMEJC
MzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguY3BwICovLAorCQkJCTA4NjM5NTE0MTNCNUZFNTcwMEJC
MzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguaCAqLywKIAkJCQk0M0I5MzM2NzEzQjI2MUIxMDA0NTg0
QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCAqLywKIAkJCQk0M0I5MzM2ODEzQjI2MUIxMDA0
NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwICovLAogCQkJCTA4RkUwQkM0MTI3RTJB
QzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCAqLywKQEAgLTIz
MDU2LDYgKzIzMDYyLDcgQEAKIAkJCQk0M0I5MzM2OTEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5p
bWF0ZWRQb2ludExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzQTYyNUY4MTNCMzMwNDAwMEFD
OTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODc1NThDNjEz
QjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwODYzOTUxNjEzQjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRo
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1ODE4LDYgKzI1ODI1LDcgQEAKIAkJCQk0M0E2MjVGOTEz
QjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0M0E2MjY2NzEzQjNEMTEwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDg3NTU4QzUxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJB
d2FyZVRleHRJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwOEI1RjI1NTEzQjVGRkYy
MDAyOTU5RUMgLyogU1ZHQW5pbWF0ZWRQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3NkRD
Q0UxMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA4OTc0MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0
aC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIgorI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkUGF0aC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIgogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkUmVjdC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcu
Y3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA4OTc0MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDYgQEAgU1ZHQW5pbWF0ZUVsZW1lbnQ6OlNWR0Fu
aW1hdGVFbGVtZW50KGNvbgogICAgICwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUoQW5pbWF0ZWRT
dHJpbmcpCiAgICAgLCBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZShSZWd1bGFyUHJvcGVydHlWYWx1
ZSkKICAgICAsIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZShSZWd1bGFyUHJvcGVydHlWYWx1ZSkKLSAg
ICAsIG1fYW5pbWF0ZWRQYXRoUG9pbnRlcigwKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjphbmltYXRlVGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpIHx8IGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykpOwogfQpAQCAtMTQ3LDcgKzE0Niw2
IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGUKIHsKICAgICBBU1NF
UlQocGVyY2VudGFnZSA+PSAwICYmIHBlcmNlbnRhZ2UgPD0gMSk7CiAgICAgQVNTRVJUKHJlc3Vs
dEVsZW1lbnQpOwotICAgIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSA9IHRoaXMtPmFuaW1h
dGlvbk1vZGUoKTsKICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0
RWxlbWVudCgpOwogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTYyLDQzICsxNjAsMTEgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0
ZQogICAgIGlmIChyZXN1bHRzLT5tX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9PSBBbmltYXRlZFN0
cmluZyAmJiBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSAhPSBBbmltYXRlZFN0cmluZykKICAgICAg
ICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKLSAgICBj
YXNlIEFuaW1hdGVkUGF0aDogewotICAgICAgICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1h
dGlvbikgewotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoUG9pbnRl
cik7Ci0gICAgICAgICAgICBtX2Zyb21QYXRoID0gcmVzdWx0cy0+bV9hbmltYXRlZFBhdGhQb2lu
dGVyLT5jb3B5KCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwZXJjZW50YWdlKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQobV9mcm9tUGF0aCk7Ci0gICAgICAgICAgICBBU1NFUlQocGVyY2VudGFn
ZSA+PSAwKTsKLSAgICAgICAgICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoUG9pbnRlciA9IG1f
ZnJvbVBhdGguZ2V0KCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocGVyY2VudGFnZSA9PSAxKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQobV90b1BhdGgpOwotICAgICAgICAgICAgcmVzdWx0cy0+bV9hbmlt
YXRlZFBhdGhQb2ludGVyID0gbV90b1BhdGguZ2V0KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBpZiAobV9mcm9tUGF0aCAmJiBtX3RvUGF0aCkgewotICAgICAgICAgICAgICAgIFNW
R1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYo
KTsKLSAgICAgICAgICAgICAgICBpZiAoIWZhY3RvcnktPmJ1aWxkQW5pbWF0ZWRTVkdQYXRoQnl0
ZVN0cmVhbShtX2Zyb21QYXRoLmdldCgpLCBtX3RvUGF0aC5nZXQoKSwgcmVzdWx0cy0+bV9hbmlt
YXRlZFBhdGgsIHBlcmNlbnRhZ2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMtPm1f
YW5pbWF0ZWRQYXRoLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMtPm1fYW5p
bWF0ZWRQYXRoUG9pbnRlciA9IDA7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoUG9pbnRlciA9IHJlc3VsdHMtPm1fYW5p
bWF0ZWRQYXRoLmdldCgpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmVz
dWx0cy0+bV9hbmltYXRlZFBhdGhQb2ludGVyID0gMDsKLSAgICAgICAgICAgIC8vIEZhbGwgYmFj
ayB0byBkaXNjcmV0ZSBhbmltYXRpb24gaWYgdGhlIHBhdGhzIGFyZSBub3QgY29tcGF0aWJsZQot
ICAgICAgICAgICAgaWYgKCFyZXN1bHRzLT5tX2FuaW1hdGVkUGF0aFBvaW50ZXIpIHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQobV9mcm9tUGF0aCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1f
dG9QYXRoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIXJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRo
KTsKLSAgICAgICAgICAgICAgICByZXN1bHRzLT5tX2FuaW1hdGVkUGF0aFBvaW50ZXIgPSAoKGFu
aW1hdGlvbk1vZGUgPT0gRnJvbVRvQW5pbWF0aW9uICYmIHBlcmNlbnRhZ2UgPiAwLjVmKSB8fCBh
bmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0gMSkgCi0gICAgICAg
ICAgICAgICAgICAgID8gbV90b1BhdGguZ2V0KCkgOiBtX2Zyb21QYXRoLmdldCgpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgY2FzZSBBbmlt
YXRlZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICBjYXNlIEFuaW1hdGVkTGVu
Z3RoOgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CisgICAgY2FzZSBBbmltYXRlZFBhdGg6CiAg
ICAgY2FzZSBBbmltYXRlZFBvaW50czoKICAgICBjYXNlIEFuaW1hdGVkUmVjdDoKICAgICBjYXNl
IEFuaW1hdGVkU3RyaW5nOiB7CkBAIC0yNTksMjEgKzIyNSwxMSBAQCBib29sIFNWR0FuaW1hdGVF
bGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgLy8gRklYTUU6IE5lZWRzIG1vcmUgc29saWQg
d2F5IGRldGVybWluZSB0YXJnZXQgYXR0cmlidXRlIHR5cGUuCiAgICAgbV9hbmltYXRlZEF0dHJp
YnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7
CiAgICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgewotICAgIGNhc2UgQW5pbWF0
ZWRQYXRoOiB7Ci0gICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0
aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAgICAgICAgaWYgKGZhY3RvcnktPmJ1aWxkU1ZHUGF0
aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKHRvU3RyaW5nLCBtX3RvUGF0aCwgVW5hbHRlcmVkUGFyc2lu
ZykpIHsKLSAgICAgICAgICAgIC8vIEZvciB0by1hbmltYXRpb25zIHRoZSBmcm9tIG51bWJlciBp
cyBjYWxjdWxhdGVkIGxhdGVyCi0gICAgICAgICAgICBpZiAoYW5pbWF0aW9uTW9kZSgpID09IFRv
QW5pbWF0aW9uIHx8IGZhY3RvcnktPmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGZy
b21TdHJpbmcsIG1fZnJvbVBhdGgsIFVuYWx0ZXJlZFBhcnNpbmcpKQotICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIG1fZnJvbVBhdGguY2xlYXIoKTsKLSAg
ICAgICAgbV90b1BhdGguY2xlYXIoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGNhc2Ug
QW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgY2FzZSBBbmltYXRl
ZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgorICAgIGNhc2UgQW5pbWF0ZWRQYXRo
OgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAg
Y2FzZSBBbmltYXRlZFN0cmluZzoKQEAgLTMwNCw2ICsyNjAsOSBAQCBib29sIFNWR0FuaW1hdGVF
bGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKICAgICAg
ICAgZW5zdXJlQW5pbWF0b3IoKS0+Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKG1fZnJvbVR5cGUs
IG1fdG9UeXBlLCBmcm9tU3RyaW5nLCBieVN0cmluZyk7CiAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGNhc2UgQW5pbWF0ZWRQYXRoOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8g
VGhpcyBzdGF0ZSBpcyBub3QgcmVhY2hhYmxlIGZvciBub3cuCisgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMxNywxNyArMjc2LDExIEBAIHZv
aWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUKICAgICBBU1NFUlQodGFyZ2V0
RWxlbWVudCk7CiAgICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRl
ZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7CiAgICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0
cmlidXRlVHlwZSkgewotICAgIGNhc2UgQW5pbWF0ZWRQYXRoOiB7Ci0gICAgICAgIG1fYW5pbWF0
ZWRQYXRoLmNsZWFyKCk7Ci0gICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0g
U1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAgICAgICAgZmFjdG9yeS0+YnVpbGRTVkdQ
YXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoYmFzZVN0cmluZywgbV9hbmltYXRlZFBhdGgsIFVuYWx0
ZXJlZFBhcnNpbmcpOwotICAgICAgICBtX2FuaW1hdGVkUGF0aFBvaW50ZXIgPSBtX2FuaW1hdGVk
UGF0aC5nZXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBjYXNlIEFuaW1hdGVkQW5n
bGU6CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAg
ICAgY2FzZSBBbmltYXRlZE51bWJlcjoKKyAgICBjYXNlIEFuaW1hdGVkUGF0aDoKICAgICBjYXNl
IEFuaW1hdGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgogICAgIGNhc2UgQW5pbWF0
ZWRTdHJpbmc6IHsKQEAgLTM0NywyMyArMzAwLDExIEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6
OmFwcGx5UmVzdWx0c1RvVGEKIHsKICAgICBTdHJpbmcgdmFsdWVUb0FwcGx5OwogICAgIHN3aXRj
aCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKLSAgICBjYXNlIEFuaW1hdGVkUGF0aDogewot
ICAgICAgICBpZiAoIW1fYW5pbWF0ZWRQYXRoUG9pbnRlciB8fCBtX2FuaW1hdGVkUGF0aFBvaW50
ZXItPmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHZhbHVlVG9BcHBseSA9IFN0cmluZygpOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8ga2VlcCBnb2luZyB0byBzdHJp
bmcgYW5kIGJhY2sgYmVjYXVzZSB3ZSBhcmUgY3VycmVudGx5IG9ubHkgYWJsZSB0byBwYWludAot
ICAgICAgICAgICAgLy8gInByb2Nlc3NlZCIgcGF0aHMgd2hlcmUgY29tcGxleCBzaGFwZXMgYXJl
IHJlcGxhY2VkIHdpdGggc2ltcGxlciBvbmVzLiBQYXRoIAotICAgICAgICAgICAgLy8gbW9ycGhp
bmcgbmVlZHMgdG8gYmUgZG9uZSB3aXRoIHVucHJvY2Vzc2VkIHBhdGhzLgotICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgY291bGQgYmUgb3B0aW1pemVkIGlmIHBhdGhzIHdlcmUgbm90IHByb2Nl
c3NlZCBhdCBwYXJzZSB0aW1lLgotICAgICAgICAgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZh
Y3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOwotICAgICAgICAgICAgZmFjdG9y
eS0+YnVpbGRTdHJpbmdGcm9tQnl0ZVN0cmVhbShtX2FuaW1hdGVkUGF0aFBvaW50ZXIsIHZhbHVl
VG9BcHBseSwgVW5hbHRlcmVkUGFyc2luZyk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAg
ICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgorICAgIGNh
c2UgQW5pbWF0ZWRQYXRoOgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmlt
YXRlZFJlY3Q6CiAgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKQEAgLTM4Nyw2ICszMjgsNyBAQCBm
bG9hdCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuCiAgICAgY2FzZSBBbmltYXRl
ZENvbG9yOgogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZE51bWJl
cjoKKyAgICBjYXNlIEFuaW1hdGVkUGF0aDoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAg
IGNhc2UgQW5pbWF0ZWRSZWN0OgogICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkocmV2aXNpb24gODk3NDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQs
MTEgKzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIEFuaW1hdGVkUHJvcGVydHlWYWx1ZVR5cGUgbV9m
cm9tUHJvcGVydHlWYWx1ZVR5cGU7CiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSBtX3Rv
UHJvcGVydHlWYWx1ZVR5cGU7Ci0gICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBtX2Zyb21Q
YXRoOwotICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gbV90b1BhdGg7Ci0gICAgT3duUHRy
PFNWR1BhdGhCeXRlU3RyZWFtPiBtX2FuaW1hdGVkUGF0aDsKLSAgICBTVkdQYXRoQnl0ZVN0cmVh
bSogbV9hbmltYXRlZFBhdGhQb2ludGVyOwotICAgIAorCiAgICAgT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4gbV9mcm9tVHlwZTsKICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX3RvVHlwZTsK
ICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX2FuaW1hdGVkVHlwZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEx
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKKyNpbmNsdWRlICJTVkdBbmltYXRlZFBhdGgu
aCIKKworI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHUGF0aFBh
cnNlckZhY3RvcnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTVkdBbmltYXRlZFBhdGhB
bmltYXRvcjo6U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5p
bWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgOiBTVkdBbmlt
YXRlZFR5cGVBbmltYXRvcihBbmltYXRlZFBhdGgsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRF
bGVtZW50KQoreworfQorCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQ
YXRoQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7
CisgICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBieXRlU3RyZWFtID0gU1ZHUGF0aEJ5dGVT
dHJlYW06OmNyZWF0ZSgpOworICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCktPmJ1aWxk
U1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKHN0cmluZywgYnl0ZVN0cmVhbSwgVW5hbHRlcmVk
UGFyc2luZyk7CisgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUGF0aChieXRlU3Ry
ZWFtLmxlYWtQdHIoKSk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNhbGN1
bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0
cmluZyYgdG9TdHJpbmcpCit7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIEFT
U0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOworCisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1h
dGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9u
RWxlbWVudCk7CisgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlID0gYW5pbWF0aW9uRWxl
bWVudC0+YW5pbWF0aW9uTW9kZSgpOworCisgICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtPiB0
b0J5dGVTdHJlYW0gPSBTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCk7ICAgIAorICAgIGJvb2wg
c3VjY2VzcyA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCktPmJ1aWxkU1ZHUGF0aEJ5dGVT
dHJlYW1Gcm9tU3RyaW5nKHRvU3RyaW5nLCB0b0J5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcp
OworICAgIHRvID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQYXRoKHRvQnl0ZVN0cmVhbS5sZWFr
UHRyKCkpOworICAgIEFTU0VSVCghdG9CeXRlU3RyZWFtKTsKKworICAgIC8vIEZvciB0by1hbmlt
YXRpb25zIHRoZSBmcm9tIG51bWJlciBpcyBjYWxjdWxhdGVkIGxhdGVyLgorICAgIGlmIChzdWNj
ZXNzICYmIGFuaW1hdGlvbk1vZGUgPT0gVG9BbmltYXRpb24pIHsKKyAgICAgICAgZnJvbSA9IFNW
R0FuaW1hdGVkVHlwZTo6Y3JlYXRlUGF0aChTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCkubGVh
a1B0cigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE93blB0cjxTVkdQYXRoQnl0
ZVN0cmVhbT4gZnJvbUJ5dGVTdHJlYW0gPSBTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCk7Cisg
ICAgaWYgKHN1Y2Nlc3MgJiYgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKS0+YnVpbGRTVkdQ
YXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoZnJvbVN0cmluZywgZnJvbUJ5dGVTdHJlYW0sIFVuYWx0
ZXJlZFBhcnNpbmcpKSB7CisgICAgICAgIGZyb20gPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBh
dGgoZnJvbUJ5dGVTdHJlYW0ubGVha1B0cigpKTsKKyAgICAgICAgQVNTRVJUKCFmcm9tQnl0ZVN0
cmVhbSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoZnJvbUJ5dGVTdHJl
YW0pOworICAgIGZyb20gPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBhdGgoZnJvbUJ5dGVTdHJl
YW0ubGVha1B0cigpKTsKK30KKwordm9pZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3Vs
YXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiwgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkLCBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxl
bWVudCk7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworCisgICAgU1ZHQW5pbWF0ZUVs
ZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+
KG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlID0g
YW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpOworCisgICAgU1ZHUGF0aEJ5dGVTdHJl
YW0qIHRvUGF0aCA9IHRvLT5wYXRoKCk7CisgICAgQVNTRVJUKHRvUGF0aCk7CisKKyAgICBTVkdQ
YXRoQnl0ZVN0cmVhbSogZnJvbVBhdGggPSBmcm9tLT5wYXRoKCk7CisgICAgQVNTRVJUKGZyb21Q
YXRoKTsKKworICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBhbmltYXRlZFBhdGggPSBhbmltYXRlZC0+
cGF0aCgpOworICAgIEFTU0VSVChhbmltYXRlZFBhdGgpOworCisgICAgaWYgKGFuaW1hdGlvbk1v
ZGUgPT0gVG9BbmltYXRpb24pCisgICAgICAgIGZyb21QYXRoLT5pbml0aWFsaXplRnJvbShhbmlt
YXRlZFBhdGgpOworCisgICAgaWYgKCFwZXJjZW50YWdlKSB7CisgICAgICAgIEFTU0VSVChwZXJj
ZW50YWdlID49IDApOworICAgICAgICBhbmltYXRlZFBhdGgtPmluaXRpYWxpemVGcm9tKGZyb21Q
YXRoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChwZXJjZW50YWdlID09IDEp
IHsKKyAgICAgICAgYW5pbWF0ZWRQYXRoLT5pbml0aWFsaXplRnJvbSh0b1BhdGgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBuZXdBbmlt
YXRlZFBhdGggPSBhZG9wdFB0cihhbmltYXRlZFBhdGgpOworICAgIGJvb2wgc3VjY2VzcyA9IFNW
R1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCktPmJ1aWxkQW5pbWF0ZWRTVkdQYXRoQnl0ZVN0cmVh
bShmcm9tUGF0aCwgdG9QYXRoLCBuZXdBbmltYXRlZFBhdGgsIHBlcmNlbnRhZ2UpOworICAgIGFu
aW1hdGVkUGF0aCA9IG5ld0FuaW1hdGVkUGF0aC5sZWFrUHRyKCk7CisgICAgaWYgKHN1Y2Nlc3Mp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICgoYW5pbWF0aW9uTW9kZSA9PSBGcm9tVG9Bbmlt
YXRpb24gJiYgcGVyY2VudGFnZSA+IDAuNSkgfHwgYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlv
biB8fCBwZXJjZW50YWdlID09IDEpIAorICAgICAgICBhbmltYXRlZFBhdGgtPmluaXRpYWxpemVG
cm9tKHRvUGF0aCk7CisgICAgZWxzZQorICAgICAgICBhbmltYXRlZFBhdGgtPmluaXRpYWxpemVG
cm9tKGZyb21QYXRoKTsKK30KKyAgIAorZmxvYXQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNh
bGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8g
Tm8gcGFjZWQgYW5pbWF0aW9ucyBmb3Igc3RyaW5ncy4KKyAgICByZXR1cm4gLTE7Cit9CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdBbmltYXRlZFBhdGhfaAorI2RlZmluZSBT
VkdBbmltYXRlZFBhdGhfaAorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJ
T04pCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OworCitjbGFzcyBTVkdBbmltYXRl
ZFBhdGhBbmltYXRvciA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CisgICAgCitw
dWJsaWM6CisgICAgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCos
IFNWR0VsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFBhdGhBbmltYXRvcigpIHsg
fQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9t
QW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3Qg
U3RyaW5nJiB0b1N0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZh
bHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJ5U3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9h
dCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IGFuaW1hdGVkVmFsdWUpOworICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29u
c3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShT
VkdfQU5JTUFUSU9OKQorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
eXBlLmNwcAkocmV2aXNpb24gODk3NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlNW
R0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRp
bGl0aWVzLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCIKICNpbmNsdWRlICJT
VkdQb2ludExpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsNiArNTIsOSBAQCBT
VkdBbmltYXRlZFR5cGU6On5TVkdBbmltYXRlZFR5cGUoKQogICAgIGNhc2UgQW5pbWF0ZWROdW1i
ZXI6CiAgICAgICAgIGRlbGV0ZSBtX2RhdGEubnVtYmVyOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIEFuaW1hdGVkUGF0aDoKKyAgICAgICAgZGVsZXRlIG1fZGF0YS5wYXRoOworICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgICAgICBkZWxldGUgbV9kYXRhLnBv
aW50TGlzdDsKICAgICAgICAgYnJlYWs7CkBAIC05OCw2ICsxMDIsMTQgQEAgUGFzc093blB0cjxT
VkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVAogICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVs
ZWFzZSgpOwogfQogCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBl
OjpjcmVhdGVQYXRoKFNWR1BhdGhCeXRlU3RyZWFtKiBwYXRoKQoreworICAgIEFTU0VSVChwYXRo
KTsKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBhZG9wdFB0cihu
ZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkUGF0aCkpOworICAgIGFuaW1hdGVkVHlwZS0+bV9k
YXRhLnBhdGggPSBwYXRoOworICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOworfQor
CiBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQb2lu
dExpc3QoU1ZHUG9pbnRMaXN0KiBwb2ludExpc3QpCiB7CiAgICAgQVNTRVJUKHBvaW50TGlzdCk7
CkBAIC0xNDYsNiArMTU4LDEyIEBAIGZsb2F0JiBTVkdBbmltYXRlZFR5cGU6Om51bWJlcigpCiAg
ICAgcmV0dXJuICptX2RhdGEubnVtYmVyOwogfQogCitTVkdQYXRoQnl0ZVN0cmVhbSogU1ZHQW5p
bWF0ZWRUeXBlOjpwYXRoKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkUGF0aCk7
CisgICAgcmV0dXJuIG1fZGF0YS5wYXRoOworfQorCiBTVkdQb2ludExpc3QmIFNWR0FuaW1hdGVk
VHlwZTo6cG9pbnRMaXN0KCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkUG9pbnRz
KTsKQEAgLTE3OSw2ICsxOTcsMTIgQEAgU3RyaW5nIFNWR0FuaW1hdGVkVHlwZTo6dmFsdWVBc1N0
cmluZygpCiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgQVNTRVJUKG1fZGF0YS5u
dW1iZXIpOwogICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoKm1fZGF0YS5udW1iZXIpOwor
ICAgIGNhc2UgQW5pbWF0ZWRQYXRoOiB7CisgICAgICAgIEFTU0VSVChtX2RhdGEucGF0aCk7Cisg
ICAgICAgIFN0cmluZyByZXN1bHQ7CisgICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxm
KCktPmJ1aWxkU3RyaW5nRnJvbUJ5dGVTdHJlYW0obV9kYXRhLnBhdGgsIHJlc3VsdCwgVW5hbHRl
cmVkUGFyc2luZyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIGNhc2UgQW5p
bWF0ZWRQb2ludHM6CiAgICAgICAgIEFTU0VSVChtX2RhdGEucG9pbnRMaXN0KTsKICAgICAgICAg
cmV0dXJuIG1fZGF0YS5wb2ludExpc3QtPnZhbHVlQXNTdHJpbmcoKTsKQEAgLTIxNiw2ICsyNDAs
MTUgQEAgYm9vbCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoYwogICAgICAgICBB
U1NFUlQobV9kYXRhLm51bWJlcik7CiAgICAgICAgIHBhcnNlTnVtYmVyRnJvbVN0cmluZyh2YWx1
ZSwgKm1fZGF0YS5udW1iZXIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGVkUGF0
aDogeworICAgICAgICBBU1NFUlQobV9kYXRhLnBhdGgpOworICAgICAgICBPd25QdHI8U1ZHUGF0
aEJ5dGVTdHJlYW0+IHBhdGhCeXRlU3RyZWFtID0gYWRvcHRQdHIobV9kYXRhLnBhdGgpOworICAg
ICAgICBwYXRoQnl0ZVN0cmVhbS0+Y2xlYXIoKTsKKyAgICAgICAgaWYgKCFTVkdQYXRoUGFyc2Vy
RmFjdG9yeTo6c2VsZigpLT5idWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyh2YWx1ZSwg
cGF0aEJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpKQorICAgICAgICAgICAgZWMgPSAxOyAv
LyBBcmJpdGFyeSB2YWx1ZSA+IDAsIGl0IGRvZXNuJ3QgbWF0dGVyIGFzIHdlIGRvbid0IHJlcG9y
dCB0aGUgZXhjZXB0aW9uIGNvZGUuCisgICAgICAgIG1fZGF0YS5wYXRoID0gcGF0aEJ5dGVTdHJl
YW0ubGVha1B0cigpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBBbmltYXRlZFBv
aW50czoKICAgICAgICAgQVNTRVJUKG1fZGF0YS5wb2ludExpc3QpOwogICAgICAgICBtX2RhdGEu
cG9pbnRMaXN0LT5jbGVhcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUu
aAkocmV2aXNpb24gODk3NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAgY2xhc3MgQ29sb3I7CiBjbGFzcyBG
bG9hdFJlY3Q7CiBjbGFzcyBTVkdBbmdsZTsKIGNsYXNzIFNWR0xlbmd0aDsKK2NsYXNzIFNWR1Bh
dGhCeXRlU3RyZWFtOwogY2xhc3MgU1ZHUG9pbnRMaXN0OwogCiBjbGFzcyBTVkdBbmltYXRlZFR5
cGUgewpAQCAtNDAsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBjcmVhdGVDb2xvcihDb2xvciopOwogICAgIHN0YXRpYyBQYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTGVuZ3RoKFNWR0xlbmd0aCopOwogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVyKGZsb2F0Kik7CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVQYXRoKFNWR1BhdGhCeXRlU3Ry
ZWFtKik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVQb2lu
dExpc3QoU1ZHUG9pbnRMaXN0Kik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBjcmVhdGVSZWN0KEZsb2F0UmVjdCopOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY3JlYXRlU3RyaW5nKFN0cmluZyopOwpAQCAtNTAsNiArNTIsNyBAQCBwdWJs
aWM6CiAgICAgQ29sb3ImIGNvbG9yKCk7CiAgICAgU1ZHTGVuZ3RoJiBsZW5ndGgoKTsKICAgICBm
bG9hdCYgbnVtYmVyKCk7CisgICAgU1ZHUGF0aEJ5dGVTdHJlYW0qIHBhdGgoKTsKICAgICBTVkdQ
b2ludExpc3QmIHBvaW50TGlzdCgpOwogICAgIEZsb2F0UmVjdCYgcmVjdCgpOwogICAgIFN0cmlu
ZyYgc3RyaW5nKCk7CkBAIC03Myw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIENvbG9yKiBj
b2xvcjsKICAgICAgICAgU1ZHTGVuZ3RoKiBsZW5ndGg7CiAgICAgICAgIGZsb2F0KiBudW1iZXI7
CisgICAgICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBwYXRoOwogICAgICAgICBTVkdQb2ludExpc3Qq
IHBvaW50TGlzdDsKICAgICAgICAgRmxvYXRSZWN0KiByZWN0OwogICAgICAgICBTdHJpbmcqIHN0
cmluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHJldmlz
aW9uIDg5NzQzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRDb2xv
ci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWROdW1iZXIuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZFBhdGguaCIKICNpbmNsdWRlICJTVkdB
bmltYXRlZFBvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUmVjdC5oIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCkBAIC01MCw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcihhbmlt
YXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOwogICAgICAgICBjYXNlIEFuaW1hdGVkTnVt
YmVyOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZE51bWJlckFu
aW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CisgICAgICAgIGNhc2Ug
QW5pbWF0ZWRQYXRoOgorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRl
ZFBhdGhBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOwogICAgICAg
ICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBT
VkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVt
ZW50KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhCeXRlU3RyZWFtLmgJKHJldmlzaW9uIDg5NzQzKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdQYXRoQnl0ZVN0cmVhbSht
X2RhdGEpKTsKICAgICB9CiAKKyAgICB2b2lkIGluaXRpYWxpemVGcm9tKFNWR1BhdGhCeXRlU3Ry
ZWFtKiBvdGhlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChvdGhlcik7CisgICAgICAgIG1fZGF0
YSA9IG90aGVyLT5tX2RhdGE7CisgICAgfQorCiAgICAgdHlwZWRlZiBWZWN0b3I8dW5zaWduZWQg
Y2hhcj4gRGF0YTsKICAgICB0eXBlZGVmIERhdGE6OmNvbnN0X2l0ZXJhdG9yIERhdGFJdGVyYXRv
cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3Bw
CShyZXZpc2lvbiA4OTc0MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFj
dG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsMTEgQEAgYm9vbCBTVkdQYXRo
UGFyc2VyRmFjdG9yeTo6YnVpbGRQYXRoRnJvbQogCiBib29sIFNWR1BhdGhQYXJzZXJGYWN0b3J5
OjpidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KGNvbnN0IFNWR1BhdGhT
ZWdMaXN0JiBsaXN0LCBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+JiByZXN1bHQsIFBhdGhQYXJz
aW5nTW9kZSBwYXJzaW5nTW9kZSkKIHsKLSAgICByZXN1bHQgPSBTVkdQYXRoQnl0ZVN0cmVhbTo6
Y3JlYXRlKCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmVzdWx0LT5jbGVhcigpOworICAg
IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gU1ZHUGF0aEJ5dGVTdHJlYW06OmNyZWF0ZSgpOworCiAg
ICAgaWYgKGxpc3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTIxOSw3
ICsyMjMsMTEgQEAgYm9vbCBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6YnVpbGRTdHJpbmdGcgogCiBi
b29sIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmlu
Zyhjb25zdCBTdHJpbmcmIGQsIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4mIHJlc3VsdCwgUGF0
aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQogewotICAgIHJlc3VsdCA9IFNWR1BhdGhCeXRlU3Ry
ZWFtOjpjcmVhdGUoKTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXN1bHQtPmNsZWFyKCk7
CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCk7
CisKICAgICBpZiAoZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjM2
LDcgKzI0NCwxMSBAQCBib29sIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpidWlsZEFuaW1hdGVkCiB7
CiAgICAgQVNTRVJUKGZyb21TdHJlYW0pOwogICAgIEFTU0VSVCh0b1N0cmVhbSk7Ci0gICAgcmVz
dWx0ID0gU1ZHUGF0aEJ5dGVTdHJlYW06OmNyZWF0ZSgpOworICAgIGlmIChyZXN1bHQpCisgICAg
ICAgIHJlc3VsdC0+Y2xlYXIoKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFNWR1BhdGhC
eXRlU3RyZWFtOjpjcmVhdGUoKTsKKwogICAgIGlmIChmcm9tU3RyZWFtLT5pc0VtcHR5KCkgfHwg
dG9TdHJlYW0tPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCg==
</data>
<flag name="review"
          id="92849"
          type_id="1"
          status="-"
          setter="krit"
    />
    <flag name="commit-queue"
          id="92851"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98605</attachid>
            <date>2011-06-25 14:07:54 -0700</date>
            <delta_ts>2011-06-25 14:31:23 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>SVGAnimatedPatch-v3.diff</filename>
            <type>text/plain</type>
            <size>34215</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NzQ3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDYtMjUgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBTVkdQYXRoIHRvIFNWR0FuaW1hdG9y
RmFjdG9yeSBjb25jZXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MzMzNgorCisgICAgICAgIENvbnZlcnQgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0i
ZCI+IHBhcnNpbmcgdG8gdGhlIG5ldyBTVkdBbmltYXRvckZhY3RvcnkgY29uY2VwdCwgcmVtb3Zp
bmcKKyAgICAgICAgdGhlIGxhc3Qgc3BlY2lhbCBkYXRhIHR5cGVzIGZyb20gU1ZHQW5pbWF0ZUVs
ZW1lbnQ6IFNWR1BhdGhCeXRlU3RyZWFtIG1fZnJvbVBhdGgvbV90b1BhdGgvbV9hbmltYXRlZFBh
dGguCisgICAgICAgIEFsbCBleGlzdGluZyBub24tc3RyaW5nIHByaW1pdGl2ZXMgaGF2ZSBiZWVu
IGNvbnZlcnRlZCB0byB0aGUgbmV3IGNvbmNlcHQuCisKKyAgICAgICAgRG9lc24ndCBjaGFuZ2Ug
YW55IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQgU1ZH
QW5pbWF0ZWRQYXRoLiouCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisg
ICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAg
ICogc3ZnL1NWR0FsbEluT25lLmNwcDogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpTVkdBbmlt
YXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6
Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVF
bGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6U1ZHQW5pbWF0
ZWRQYXRoQW5pbWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0
b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQ
YXRoQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjYWxj
dWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUGF0aC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjp+U1ZHQW5pbWF0ZWRQ
YXRoQW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjp+U1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZFR5cGU6OnBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRU
eXBlOjp2YWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6
c2V0VmFsdWVBc1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5oOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRvckZhY3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdG9yRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEJ5dGVTdHJlYW0u
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCeXRlU3RyZWFtOjppbml0aWFsaXplRnJvbSk6
CisgICAgICAgICogc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhQYXJzZXJGYWN0b3J5OjpidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1Bh
dGhTZWdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXJGYWN0b3J5OjpidWls
ZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
UGFyc2VyRmFjdG9yeTo6YnVpbGRBbmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKToKKwogMjAxMS0w
Ni0yNSAgUm9iIEJ1aXMgIDxyYnVpc0ByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5p
a29sYXMgWmltbWVybWFubi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA4OTc0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
NjYwLDYgKzE2NjAsNyBAQCBJRiAoRU5BQkxFX1NWRykKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVk
Q29sb3IuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAKICAgICAgICAgc3Zn
L1NWR0FuaW1hdGVkTnVtYmVyLmNwcAorICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAog
ICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmlt
YXRlZFJlY3QuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gODk3NDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNDM0LDYgKzM0MzQs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZE51bWJlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggXAorCVNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRQYXRoLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlz
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggXApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gODk3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEwNTIsNiArMTA1Miw3IEBACiAgICAgICAgICAg
ICAnc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5p
bWF0ZWROdW1iZXIuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5o
JywKKyAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRQYXRoLmgnLAogICAgICAgICAgICAgJ3N2
Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFJlY3Qu
aCcsCkBAIC01NzExLDYgKzU3MTIsNyBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZENv
bG9yLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcCcsCiAgICAg
ICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcCcsCisgICAgICAgICAgICAnc3ZnL1NW
R0FuaW1hdGVkUGF0aC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFBvaW50TGlz
dC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFJlY3QuY3BwJywKICAgICAgICAg
ICAgICdzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZp
c2lvbiA4OTc0NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzM1LDYgKzIzMzUsNyBAQCBIRUFERVJTICs9IFwKICAgICBzdmcvU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0LmggXAogICAgIHN2Zy9TVkdBbmltYXRlZE51bWJlci5oIFwKICAgICBzdmcvU1ZH
QW5pbWF0ZWROdW1iZXJMaXN0LmggXAorICAgIHN2Zy9TVkdBbmltYXRlZFBhdGguaCBcCiAgICAg
c3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIFwKICAgICBzdmcvU1ZHQW5pbWF0
ZWRQb2ludExpc3QuaCBcCiAgICAgc3ZnL1NWR0FuaW1hdGVkUmVjdC5oIFwKQEAgLTMzMzgsNiAr
MzMzOSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkgewogICAgICAgICAgICAg
ICBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0
ZWRMZW5ndGguY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcCBc
CisgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFBhdGguY3BwIFwKICAgICAgICAgICAgICAg
c3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmlt
YXRlZFJlY3QuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
cmV2aXNpb24gODk3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjU0MDIsNiArNjU0MDIsMTAgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0FuaW1hdGVk
UGF0aC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlxzdmdcU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAJCQkJPgogCQkJPC9GaWxl
PgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gODk3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQAog
CQkwODVCOTJCQTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NUI5MkI4MEVGREU3M0Qw
MEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovOyB9OwogCQkwODVCOTJCQjBFRkRFNzNE
MDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFC
dWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMDg1Q0Qy
NzUxMzhCQjhFMDAwOTA3RjJEIC8qIFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVDRDI3NDEzOEJCOEUw
MDA5MDdGMkQgLyogU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsKKwkJMDg2Mzk1
MTYxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2Mzk1MTQxM0I1RkU1NzAwQkIzNDREIC8q
IFNWR0FuaW1hdGVkUGF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA4NjQxRDQ3MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwODY0MUQ0NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UuY3BwICovOyB9OwogCQkwODY0MUQ0ODEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA4NkJCRDBGMTM2MDM5QzIwMDhCMTVEOCAvKiBHbHlwaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2QkJEMEUxMzYwMzlDMjAw
OEIxNUQ4IC8qIEdseXBoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTE0Nyw2ICsxNDgsNyBAQAogCQkwOEE0OEE2RTBFODZDRjZEMDBFMjI1REQg
LyogSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhBNDhBNkQwRTg2Q0Y2RDAwRTIyNUREIC8qIEpTU1ZH
RWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDhCMzVCMTMxMjdCNkE3QzAwNTMx
NEREIC8qIFNWR0FuaW1hdGVkTnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwOEIzNUIxMjEyN0I2QTdDMDA1MzE0REQgLyogU1ZHQW5pbWF0ZWRO
dW1iZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwOEIzNUIxNzEyN0I2QTg4MDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEIzNUIxNjEyN0I2
QTg4MDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDhCNUYyNTUxM0I1RkZGMjAwMjk1OUVD
IC8qIFNWR0FuaW1hdGVkUGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODYzOTUxMzEzQjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRo
LmNwcCAqLzsgfTsKIAkJMDhDNzEzNkUxMjg5NTZBMzAwMUIxMDdFIC8qIFNWR1RyYW5zZm9ybUxp
c3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4QzcxMzZEMTI4OTU2QTMwMDFCMTA3RSAvKiBTVkdUcmFuc2Zvcm1MaXN0UHJv
cGVydHlUZWFyT2ZmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDhDN0EyQzcxMERDNzQ2MjAwMkQzNjhCIC8qIFNWR05hbWVzLmggaW4gQ29weSBH
ZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1
ODFFOTA5RDE1MDhEMDAwRTYxRDcgLyogU1ZHTmFtZXMuaCAqLzsgfTsKIAkJMDhDODU5QzAxMjc0
NTc1NDAwQTU3MjhEIC8qIFNWR0FuaW1hdGVkUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhDODU5QkYxMjc0NTc1MzAwQTU3MjhEIC8qIFNWR0Fu
aW1hdGVkUmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC02NDc3LDYgKzY0NzksOCBAQAogCQkwODVCOTJCODBFRkRFNzNEMDBFNjEyM0MgLyog
Rm9ybURhdGFCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZvcm1EYXRhQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NUI5
MkI5MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRm9ybURhdGFCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4NUNEMjc0MTM4QkI4RTAwMDkwN0YyRCAvKiBTVkdUZXh0UnVuUmVuZGVyaW5n
Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUZXh0UnVuUmVu
ZGVyaW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwODYzOTUxMzEz
QjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA4NjM5NTE0MTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQYXRoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAvKiBS
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NjQxRDQ2MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwODZCQkQwRTEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2x5cGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3NDAzLDYgKzE3NDA3LDggQEAKIAkJCQlCMjIyNzdFQzBEMDBCRjFGMDA3MUI3ODIgLyog
U1ZHQW5pbWF0ZWROdW1iZXIuaWRsICovLAogCQkJCTA4QjM1QjE2MTI3QjZBODgwMDUzMTRERCAv
KiBTVkdBbmltYXRlZE51bWJlckxpc3QuaCAqLywKIAkJCQlCMjIyNzdFRDBEMDBCRjFGMDA3MUI3
ODIgLyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmlkbCAqLywKKwkJCQkwODYzOTUxMzEzQjVGRTU3
MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRoLmNwcCAqLywKKwkJCQkwODYzOTUxNDEzQjVGRTU3
MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRoLmggKi8sCiAJCQkJNDNCOTMzNjcxM0IyNjFCMTAw
NDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmggKi8sCiAJCQkJNDNCOTMzNjgxM0IyNjFC
MTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCAqLywKIAkJCQkwOEZFMEJDNDEy
N0UyQUMxMDAwQzRGQjUgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi8sCkBA
IC0yMzA1Niw2ICsyMzA2Miw3IEBACiAJCQkJNDNCOTMzNjkxM0IyNjFCMTAwNDU4NEJGIC8qIFNW
R0FuaW1hdGVkUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0M0E2MjVGODEzQjMzMDQw
MDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg3NTU4
QzYxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMDg2Mzk1MTYxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVk
UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTgxOCw2ICsyNTgyNSw3IEBACiAJCQkJNDNBNjI1
RjkxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDNBNjI2NjcxM0IzRDExMDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkU3RyaW5nLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTA4NzU1OEM1MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQ
YWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDhCNUYyNTUxM0I1
RkZGMjAwMjk1OUVDIC8qIFNWR0FuaW1hdGVkUGF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
NzZEQ0NFMTEzQjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkocmV2aXNpb24gODk3NDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRDb2xvci5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRM
ZW5ndGguY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmNwcCIKKyNpbmNsdWRlICJT
VkdBbmltYXRlZFBhdGguY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCIK
ICNpbmNsdWRlICJTVkdBbmltYXRlZFJlY3QuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3Ry
aW5nLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAko
cmV2aXNpb24gODk3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0b3JGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKLSNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNWR1N0
eWxlZEVsZW1lbnQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTQ0LDcgKzQzLDYgQEAg
U1ZHQW5pbWF0ZUVsZW1lbnQ6OlNWR0FuaW1hdGVFbGVtZW50KGNvbgogICAgICwgbV9hbmltYXRl
ZEF0dHJpYnV0ZVR5cGUoQW5pbWF0ZWRTdHJpbmcpCiAgICAgLCBtX2Zyb21Qcm9wZXJ0eVZhbHVl
VHlwZShSZWd1bGFyUHJvcGVydHlWYWx1ZSkKICAgICAsIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZShS
ZWd1bGFyUHJvcGVydHlWYWx1ZSkKLSAgICAsIG1fYW5pbWF0ZWRQYXRoUG9pbnRlcigwKQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBoYXNUYWdOYW1l
KFNWR05hbWVzOjpzZXRUYWcpIHx8IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRh
ZykpOwogfQpAQCAtMTQ3LDcgKzE0NSw2IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1
bGF0ZUFuaW1hdGUKIHsKICAgICBBU1NFUlQocGVyY2VudGFnZSA+PSAwICYmIHBlcmNlbnRhZ2Ug
PD0gMSk7CiAgICAgQVNTRVJUKHJlc3VsdEVsZW1lbnQpOwotICAgIEFuaW1hdGlvbk1vZGUgYW5p
bWF0aW9uTW9kZSA9IHRoaXMtPmFuaW1hdGlvbk1vZGUoKTsKICAgICBTVkdFbGVtZW50KiB0YXJn
ZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIGlmICghdGFyZ2V0RWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTYyLDQzICsxNTksMTEgQEAgdm9pZCBTVkdBbmltYXRl
RWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZQogICAgIGlmIChyZXN1bHRzLT5tX2FuaW1hdGVkQXR0
cmlidXRlVHlwZSA9PSBBbmltYXRlZFN0cmluZyAmJiBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSAh
PSBBbmltYXRlZFN0cmluZykKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV9hbmltYXRl
ZEF0dHJpYnV0ZVR5cGUpIHsKLSAgICBjYXNlIEFuaW1hdGVkUGF0aDogewotICAgICAgICBpZiAo
YW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbikgewotICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dHMtPm1fYW5pbWF0ZWRQYXRoUG9pbnRlcik7Ci0gICAgICAgICAgICBtX2Zyb21QYXRoID0gcmVz
dWx0cy0+bV9hbmltYXRlZFBhdGhQb2ludGVyLT5jb3B5KCk7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCFwZXJjZW50YWdlKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9mcm9tUGF0aCk7Ci0gICAg
ICAgICAgICBBU1NFUlQocGVyY2VudGFnZSA+PSAwKTsKLSAgICAgICAgICAgIHJlc3VsdHMtPm1f
YW5pbWF0ZWRQYXRoUG9pbnRlciA9IG1fZnJvbVBhdGguZ2V0KCk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAocGVyY2VudGFnZSA9PSAxKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV90b1BhdGgpOwotICAg
ICAgICAgICAgcmVzdWx0cy0+bV9hbmltYXRlZFBhdGhQb2ludGVyID0gbV90b1BhdGguZ2V0KCk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobV9mcm9tUGF0aCAmJiBtX3RvUGF0
aCkgewotICAgICAgICAgICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZH
UGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWZhY3Rvcnkt
PmJ1aWxkQW5pbWF0ZWRTVkdQYXRoQnl0ZVN0cmVhbShtX2Zyb21QYXRoLmdldCgpLCBtX3RvUGF0
aC5nZXQoKSwgcmVzdWx0cy0+bV9hbmltYXRlZFBhdGgsIHBlcmNlbnRhZ2UpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoLmNsZWFyKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoUG9pbnRlciA9IDA7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRo
UG9pbnRlciA9IHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoLmdldCgpOwotICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0cy0+bV9hbmltYXRlZFBhdGhQb2ludGVyID0gMDsK
LSAgICAgICAgICAgIC8vIEZhbGwgYmFjayB0byBkaXNjcmV0ZSBhbmltYXRpb24gaWYgdGhlIHBh
dGhzIGFyZSBub3QgY29tcGF0aWJsZQotICAgICAgICAgICAgaWYgKCFyZXN1bHRzLT5tX2FuaW1h
dGVkUGF0aFBvaW50ZXIpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9mcm9tUGF0aCk7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKG1fdG9QYXRoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
IXJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoKTsKLSAgICAgICAgICAgICAgICByZXN1bHRzLT5tX2Fu
aW1hdGVkUGF0aFBvaW50ZXIgPSAoKGFuaW1hdGlvbk1vZGUgPT0gRnJvbVRvQW5pbWF0aW9uICYm
IHBlcmNlbnRhZ2UgPiAwLjVmKSB8fCBhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uIHx8IHBl
cmNlbnRhZ2UgPT0gMSkgCi0gICAgICAgICAgICAgICAgICAgID8gbV90b1BhdGguZ2V0KCkgOiBt
X2Zyb21QYXRoLmdldCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0ZWRDb2xv
cjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6Cisg
ICAgY2FzZSBBbmltYXRlZFBhdGg6CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKICAgICBjYXNl
IEFuaW1hdGVkUmVjdDoKICAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOiB7CkBAIC0yNTksMjEgKzIy
NCwxMSBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgLy8g
RklYTUU6IE5lZWRzIG1vcmUgc29saWQgd2F5IGRldGVybWluZSB0YXJnZXQgYXR0cmlidXRlIHR5
cGUuCiAgICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJp
YnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7CiAgICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRl
VHlwZSkgewotICAgIGNhc2UgQW5pbWF0ZWRQYXRoOiB7Ci0gICAgICAgIFNWR1BhdGhQYXJzZXJG
YWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAgICAgICAg
aWYgKGZhY3RvcnktPmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKHRvU3RyaW5nLCBt
X3RvUGF0aCwgVW5hbHRlcmVkUGFyc2luZykpIHsKLSAgICAgICAgICAgIC8vIEZvciB0by1hbmlt
YXRpb25zIHRoZSBmcm9tIG51bWJlciBpcyBjYWxjdWxhdGVkIGxhdGVyCi0gICAgICAgICAgICBp
ZiAoYW5pbWF0aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uIHx8IGZhY3RvcnktPmJ1aWxkU1ZHUGF0
aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGZyb21TdHJpbmcsIG1fZnJvbVBhdGgsIFVuYWx0ZXJlZFBh
cnNpbmcpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IG1fZnJvbVBhdGguY2xlYXIoKTsKLSAgICAgICAgbV90b1BhdGguY2xlYXIoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVk
Q29sb3I6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVy
OgorICAgIGNhc2UgQW5pbWF0ZWRQYXRoOgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAg
Y2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKQEAgLTMwNCw2ICsy
NTksOSBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgY2Fz
ZSBBbmltYXRlZFN0cmluZzoKICAgICAgICAgZW5zdXJlQW5pbWF0b3IoKS0+Y2FsY3VsYXRlRnJv
bUFuZEJ5VmFsdWVzKG1fZnJvbVR5cGUsIG1fdG9UeXBlLCBmcm9tU3RyaW5nLCBieVN0cmluZyk7
CiAgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQW5pbWF0ZWRQYXRoOgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVGhpcyBzdGF0ZSBpcyBub3QgcmVhY2hhYmxlIGZvciBu
b3cuCisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTMxNywxNyArMjc1LDExIEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNl
VmFsdWUKICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CiAgICAgbV9hbmltYXRlZEF0dHJpYnV0
ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7CiAg
ICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgewotICAgIGNhc2UgQW5pbWF0ZWRQ
YXRoOiB7Ci0gICAgICAgIG1fYW5pbWF0ZWRQYXRoLmNsZWFyKCk7Ci0gICAgICAgIFNWR1BhdGhQ
YXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAg
ICAgICAgZmFjdG9yeS0+YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoYmFzZVN0cmlu
ZywgbV9hbmltYXRlZFBhdGgsIFVuYWx0ZXJlZFBhcnNpbmcpOwotICAgICAgICBtX2FuaW1hdGVk
UGF0aFBvaW50ZXIgPSBtX2FuaW1hdGVkUGF0aC5nZXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAg
IGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKKyAgICBjYXNl
IEFuaW1hdGVkUGF0aDoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0
ZWRSZWN0OgogICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6IHsKQEAgLTM0NywyMyArMjk5LDExIEBA
IHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGEKIHsKICAgICBTdHJpbmcg
dmFsdWVUb0FwcGx5OwogICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKLSAg
ICBjYXNlIEFuaW1hdGVkUGF0aDogewotICAgICAgICBpZiAoIW1fYW5pbWF0ZWRQYXRoUG9pbnRl
ciB8fCBtX2FuaW1hdGVkUGF0aFBvaW50ZXItPmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHZhbHVl
VG9BcHBseSA9IFN0cmluZygpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIFdlIG5l
ZWQgdG8ga2VlcCBnb2luZyB0byBzdHJpbmcgYW5kIGJhY2sgYmVjYXVzZSB3ZSBhcmUgY3VycmVu
dGx5IG9ubHkgYWJsZSB0byBwYWludAotICAgICAgICAgICAgLy8gInByb2Nlc3NlZCIgcGF0aHMg
d2hlcmUgY29tcGxleCBzaGFwZXMgYXJlIHJlcGxhY2VkIHdpdGggc2ltcGxlciBvbmVzLiBQYXRo
IAotICAgICAgICAgICAgLy8gbW9ycGhpbmcgbmVlZHMgdG8gYmUgZG9uZSB3aXRoIHVucHJvY2Vz
c2VkIHBhdGhzLgotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgb3B0aW1pemVk
IGlmIHBhdGhzIHdlcmUgbm90IHByb2Nlc3NlZCBhdCBwYXJzZSB0aW1lLgotICAgICAgICAgICAg
U1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2Vs
ZigpOwotICAgICAgICAgICAgZmFjdG9yeS0+YnVpbGRTdHJpbmdGcm9tQnl0ZVN0cmVhbShtX2Fu
aW1hdGVkUGF0aFBvaW50ZXIsIHZhbHVlVG9BcHBseSwgVW5hbHRlcmVkUGFyc2luZyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAg
ICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNl
IEFuaW1hdGVkTnVtYmVyOgorICAgIGNhc2UgQW5pbWF0ZWRQYXRoOgogICAgIGNhc2UgQW5pbWF0
ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgY2FzZSBBbmltYXRlZFN0cmlu
ZzoKQEAgLTM4Nyw2ICszMjcsNyBAQCBmbG9hdCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRl
RGlzdGFuCiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6
CiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKKyAgICBjYXNlIEFuaW1hdGVkUGF0aDoKICAgICBj
YXNlIEFuaW1hdGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgogICAgIGNhc2UgQW5p
bWF0ZWRTdHJpbmc6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAko
cmV2aXNpb24gODk3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTEgKzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIEFuaW1h
dGVkUHJvcGVydHlWYWx1ZVR5cGUgbV9mcm9tUHJvcGVydHlWYWx1ZVR5cGU7CiAgICAgQW5pbWF0
ZWRQcm9wZXJ0eVZhbHVlVHlwZSBtX3RvUHJvcGVydHlWYWx1ZVR5cGU7Ci0gICAgT3duUHRyPFNW
R1BhdGhCeXRlU3RyZWFtPiBtX2Zyb21QYXRoOwotICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVh
bT4gbV90b1BhdGg7Ci0gICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBtX2FuaW1hdGVkUGF0
aDsKLSAgICBTVkdQYXRoQnl0ZVN0cmVhbSogbV9hbmltYXRlZFBhdGhQb2ludGVyOwotICAgIAor
CiAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gbV9mcm9tVHlwZTsKICAgICBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBtX3RvVHlwZTsKICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX2Fu
aW1hdGVkVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAJ
KHJldmlzaW9uIDg5NzQ0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyBpbmxpbmUgU1ZHQW5n
bGUmIHNoYXJlZFNWR0FuZ2xlKGMKIAogUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0Fu
aW1hdGVkQW5nbGVBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZykKIHsKLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBTVkdB
bmltYXRlZFR5cGU6OmNyZWF0ZUFuZ2xlKG5ldyBTVkdBbmdsZSgpKTsKKyAgICBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUFuZ2xl
KG5ldyBTVkdBbmdsZSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYW5pbWF0ZWRU
eXBlLT5hbmdsZSgpLnNldFZhbHVlQXNTdHJpbmcoc3RyaW5nLCBlYyk7CiAgICAgQVNTRVJUKCFl
Yyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCisjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRQYXRoLmgiCisKKyNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIlNWR1BhdGhQYXJzZXJGYWN0b3J5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yKFNWR0FuaW1h
dGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
KQorICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRQYXRoLCBhbmltYXRpb25F
bGVtZW50LCBjb250ZXh0RWxlbWVudCkKK3sKK30KKworUGFzc093blB0cjxTVkdBbmltYXRlZFR5
cGU+IFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQoreworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgcmV0dXJuIGNv
bnN0cnVjdEZyb21TdHJpbmcoc3RyaW5nLCByZXN1bHQpOworfQorCitQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wmIHJlc3VsdCkKK3sKKyAgICBPd25QdHI8U1ZHUGF0
aEJ5dGVTdHJlYW0+IGJ5dGVTdHJlYW0gPSBTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCk7Cisg
ICAgcmVzdWx0ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKS0+YnVpbGRTVkdQYXRoQnl0
ZVN0cmVhbUZyb21TdHJpbmcoc3RyaW5nLCBieXRlU3RyZWFtLCBVbmFsdGVyZWRQYXJzaW5nKTsK
KyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQYXRoKGJ5dGVTdHJlYW0ucmVsZWFz
ZSgpKTsKK30KKwordm9pZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFu
ZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0
cmluZykKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgQVNTRVJUKG1fYW5p
bWF0aW9uRWxlbWVudCk7CisKKyAgICBTVkdBbmltYXRlRWxlbWVudCogYW5pbWF0aW9uRWxlbWVu
dCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmltYXRpb25FbGVtZW50KTsK
KyAgICBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUgPSBhbmltYXRpb25FbGVtZW50LT5hbmlt
YXRpb25Nb2RlKCk7CisKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICB0byA9IGNvbnN0
cnVjdEZyb21TdHJpbmcodG9TdHJpbmcsIHN1Y2Nlc3MpOworCisgICAgLy8gRm9yIHRvLWFuaW1h
dGlvbnMgdGhlIGZyb20gbnVtYmVyIGlzIGNhbGN1bGF0ZWQgbGF0ZXIuCisgICAgaWYgKCFzdWNj
ZXNzIHx8IGFuaW1hdGlvbk1vZGUgPT0gVG9BbmltYXRpb24pIHsKKyAgICAgICAgZnJvbSA9IFNW
R0FuaW1hdGVkVHlwZTo6Y3JlYXRlUGF0aChTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmco
ZnJvbVN0cmluZywgc3VjY2Vzcyk7CisgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsK
KworICAgIGZyb20gPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBhdGgoU1ZHUGF0aEJ5dGVTdHJl
YW06OmNyZWF0ZSgpKTsKK30KKwordm9pZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3Vs
YXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiwgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkLCBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxl
bWVudCk7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworCisgICAgU1ZHQW5pbWF0ZUVs
ZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+
KG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlID0g
YW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpOworCisgICAgU1ZHUGF0aEJ5dGVTdHJl
YW0qIHRvUGF0aCA9IHRvLT5wYXRoKCk7CisgICAgQVNTRVJUKHRvUGF0aCk7CisKKyAgICBTVkdQ
YXRoQnl0ZVN0cmVhbSogZnJvbVBhdGggPSBmcm9tLT5wYXRoKCk7CisgICAgQVNTRVJUKGZyb21Q
YXRoKTsKKworICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBhbmltYXRlZFBhdGggPSBhbmltYXRlZC0+
cGF0aCgpOworICAgIEFTU0VSVChhbmltYXRlZFBhdGgpOworCisgICAgaWYgKGFuaW1hdGlvbk1v
ZGUgPT0gVG9BbmltYXRpb24pCisgICAgICAgIGZyb21QYXRoLT5pbml0aWFsaXplRnJvbShhbmlt
YXRlZFBhdGgpOworCisgICAgaWYgKCFwZXJjZW50YWdlKSB7CisgICAgICAgIGFuaW1hdGVkUGF0
aC0+aW5pdGlhbGl6ZUZyb20oZnJvbVBhdGgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKHBlcmNlbnRhZ2UgPT0gMSkgeworICAgICAgICBhbmltYXRlZFBhdGgtPmluaXRpYWxp
emVGcm9tKHRvUGF0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBPd25QdHI8U1ZH
UGF0aEJ5dGVTdHJlYW0+IG5ld0FuaW1hdGVkUGF0aCA9IGFkb3B0UHRyKGFuaW1hdGVkUGF0aCk7
CisgICAgYm9vbCBzdWNjZXNzID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKS0+YnVpbGRB
bmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKGZyb21QYXRoLCB0b1BhdGgsIG5ld0FuaW1hdGVkUGF0
aCwgcGVyY2VudGFnZSk7CisgICAgYW5pbWF0ZWRQYXRoID0gbmV3QW5pbWF0ZWRQYXRoLmxlYWtQ
dHIoKTsKKyAgICBpZiAoc3VjY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKChhbmlt
YXRpb25Nb2RlID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJjZW50YWdlID4gMC41KSB8fCBhbmlt
YXRpb25Nb2RlID09IFRvQW5pbWF0aW9uKQorICAgICAgICBhbmltYXRlZFBhdGgtPmluaXRpYWxp
emVGcm9tKHRvUGF0aCk7CisgICAgZWxzZQorICAgICAgICBhbmltYXRlZFBhdGgtPmluaXRpYWxp
emVGcm9tKGZyb21QYXRoKTsKK30KKyAgIAorZmxvYXQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6
OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAg
Ly8gTm8gcGFjZWQgYW5pbWF0aW9ucyBmb3Igc3RyaW5ncy4KKyAgICByZXR1cm4gLTE7Cit9CisK
K30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdBbmltYXRlZFBhdGhfaAorI2RlZmlu
ZSBTVkdBbmltYXRlZFBhdGhfaAorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklN
QVRJT04pCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OworCitjbGFzcyBTVkdBbmlt
YXRlZFBhdGhBbmltYXRvciA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CisgICAg
CitwdWJsaWM6CisgICAgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVu
dCosIFNWR0VsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFBhdGhBbmltYXRvcigp
IHsgfQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVG
cm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29u
c3QgU3RyaW5nJiB0b1N0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRC
eVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGJ5U3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShm
bG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVl
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIGFuaW1hdGVkVmFsdWUpOworICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKKworcHJp
dmF0ZToKKyAgICBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmlu
Zyhjb25zdCBTdHJpbmcmLCBib29sICZzdWNjZXNzKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkocmV2aXNp
b24gODk3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5j
bHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisjaW5j
bHVkZSAiU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCIKICNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsNiArNTIsOSBAQCBTVkdBbmltYXRlZFR5cGU6
On5TVkdBbmltYXRlZFR5cGUoKQogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAgICAgICAgIGRl
bGV0ZSBtX2RhdGEubnVtYmVyOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGVkUGF0
aDoKKyAgICAgICAgZGVsZXRlIG1fZGF0YS5wYXRoOworICAgICAgICBicmVhazsKICAgICBjYXNl
IEFuaW1hdGVkUG9pbnRzOgogICAgICAgICBkZWxldGUgbV9kYXRhLnBvaW50TGlzdDsKICAgICAg
ICAgYnJlYWs7CkBAIC05OCw2ICsxMDIsMTQgQEAgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+
IFNWR0FuaW1hdGVkVAogICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOwogfQogCitQ
YXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQYXRoKFBh
c3NPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IHBhdGgpCit7CisgICAgQVNTRVJUKHBhdGgpOwor
ICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFuaW1hdGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBT
VkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRQYXRoKSk7CisgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEu
cGF0aCA9IHBhdGgubGVha1B0cigpOworICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgp
OworfQorCiBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVh
dGVQb2ludExpc3QoU1ZHUG9pbnRMaXN0KiBwb2ludExpc3QpCiB7CiAgICAgQVNTRVJUKHBvaW50
TGlzdCk7CkBAIC0xNDYsNiArMTU4LDEyIEBAIGZsb2F0JiBTVkdBbmltYXRlZFR5cGU6Om51bWJl
cigpCiAgICAgcmV0dXJuICptX2RhdGEubnVtYmVyOwogfQogCitTVkdQYXRoQnl0ZVN0cmVhbSog
U1ZHQW5pbWF0ZWRUeXBlOjpwYXRoKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVk
UGF0aCk7CisgICAgcmV0dXJuIG1fZGF0YS5wYXRoOworfQorCiBTVkdQb2ludExpc3QmIFNWR0Fu
aW1hdGVkVHlwZTo6cG9pbnRMaXN0KCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVk
UG9pbnRzKTsKQEAgLTE3OSw2ICsxOTcsMTIgQEAgU3RyaW5nIFNWR0FuaW1hdGVkVHlwZTo6dmFs
dWVBc1N0cmluZygpCiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgQVNTRVJUKG1f
ZGF0YS5udW1iZXIpOwogICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoKm1fZGF0YS5udW1i
ZXIpOworICAgIGNhc2UgQW5pbWF0ZWRQYXRoOiB7CisgICAgICAgIEFTU0VSVChtX2RhdGEucGF0
aCk7CisgICAgICAgIFN0cmluZyByZXN1bHQ7CisgICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5
OjpzZWxmKCktPmJ1aWxkU3RyaW5nRnJvbUJ5dGVTdHJlYW0obV9kYXRhLnBhdGgsIHJlc3VsdCwg
VW5hbHRlcmVkUGFyc2luZyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIGNh
c2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgICAgIEFTU0VSVChtX2RhdGEucG9pbnRMaXN0KTsKICAg
ICAgICAgcmV0dXJuIG1fZGF0YS5wb2ludExpc3QtPnZhbHVlQXNTdHJpbmcoKTsKQEAgLTIxNiw2
ICsyNDAsMTQgQEAgYm9vbCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoYwogICAg
ICAgICBBU1NFUlQobV9kYXRhLm51bWJlcik7CiAgICAgICAgIHBhcnNlTnVtYmVyRnJvbVN0cmlu
Zyh2YWx1ZSwgKm1fZGF0YS5udW1iZXIpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1h
dGVkUGF0aDogeworICAgICAgICBBU1NFUlQobV9kYXRhLnBhdGgpOworICAgICAgICBPd25QdHI8
U1ZHUGF0aEJ5dGVTdHJlYW0+IHBhdGhCeXRlU3RyZWFtID0gYWRvcHRQdHIobV9kYXRhLnBhdGgp
OworICAgICAgICBpZiAoIVNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCktPmJ1aWxkU1ZHUGF0
aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKHZhbHVlLCBwYXRoQnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFy
c2luZykpCisgICAgICAgICAgICBlYyA9IDE7IC8vIEFyYml0YXJ5IHZhbHVlID4gMCwgaXQgZG9l
c24ndCBtYXR0ZXIgYXMgd2UgZG9uJ3QgcmVwb3J0IHRoZSBleGNlcHRpb24gY29kZS4KKyAgICAg
ICAgbV9kYXRhLnBhdGggPSBwYXRoQnl0ZVN0cmVhbS5sZWFrUHRyKCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgICAgICBBU1NFUlQobV9kYXRh
LnBvaW50TGlzdCk7CiAgICAgICAgIG1fZGF0YS5wb2ludExpc3QtPmNsZWFyKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCShyZXZpc2lvbiA4OTc0NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiAr
MjIsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCiAjaW5j
bHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVDb2xvcihDb2xvciopOwogICAgIHN0
YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTGVuZ3RoKFNWR0xlbmd0aCop
OwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVyKGZs
b2F0Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVQYXRo
KFBhc3NPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+KTsKICAgICBzdGF0aWMgUGFzc093blB0cjxT
VkdBbmltYXRlZFR5cGU+IGNyZWF0ZVBvaW50TGlzdChTVkdQb2ludExpc3QqKTsKICAgICBzdGF0
aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVJlY3QoRmxvYXRSZWN0Kik7CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVTdHJpbmcoU3RyaW5n
Kik7CkBAIC01MCw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBDb2xvciYgY29sb3IoKTsKICAgICBT
VkdMZW5ndGgmIGxlbmd0aCgpOwogICAgIGZsb2F0JiBudW1iZXIoKTsKKyAgICBTVkdQYXRoQnl0
ZVN0cmVhbSogcGF0aCgpOwogICAgIFNWR1BvaW50TGlzdCYgcG9pbnRMaXN0KCk7CiAgICAgRmxv
YXRSZWN0JiByZWN0KCk7CiAgICAgU3RyaW5nJiBzdHJpbmcoKTsKQEAgLTczLDYgKzc2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgQ29sb3IqIGNvbG9yOwogICAgICAgICBTVkdMZW5ndGgqIGxlbmd0
aDsKICAgICAgICAgZmxvYXQqIG51bWJlcjsKKyAgICAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0qIHBh
dGg7CiAgICAgICAgIFNWR1BvaW50TGlzdCogcG9pbnRMaXN0OwogICAgICAgICBGbG9hdFJlY3Qq
IHJlY3Q7CiAgICAgICAgIFN0cmluZyogc3RyaW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdG9yRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRvckZhY3RvcnkuaAkocmV2aXNpb24gODk3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
ICNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5n
dGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgorI2luY2x1ZGUgIlNWR0FuaW1h
dGVkUGF0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIKQEAgLTUw
LDYgKzUxLDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdB
bmltYXRlZExlbmd0aEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7
CiAgICAgICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4
dEVsZW1lbnQpKTsKKyAgICAgICAgY2FzZSBBbmltYXRlZFBhdGg6CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQs
IGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IoYW5p
bWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmltYXRlZFJl
Y3Q6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAkocmV2aXNpb24g
ODk3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNiArNTYsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFNWR1BhdGhCeXRlU3RyZWFtKG1fZGF0YSkpOwogICAgIH0KIAorICAgIHZvaWQgaW5p
dGlhbGl6ZUZyb20oU1ZHUGF0aEJ5dGVTdHJlYW0qIG90aGVyKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG90aGVyKTsKKyAgICAgICAgbV9kYXRhID0gb3RoZXItPm1fZGF0YTsKKyAgICB9CisKICAg
ICB0eXBlZGVmIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBEYXRhOwogICAgIHR5cGVkZWYgRGF0YTo6
Y29uc3RfaXRlcmF0b3IgRGF0YUl0ZXJhdG9yOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAJKHJldmlzaW9uIDg5NzQ0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQy
LDcgKzE0MiwxMSBAQCBib29sIFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpidWlsZFBhdGhGcm9tCiAK
IGJvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZH
UGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmIGxpc3QsIE93blB0cjxTVkdQYXRoQnl0
ZVN0cmVhbT4mIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQogewotICAgIHJl
c3VsdCA9IFNWR1BhdGhCeXRlU3RyZWFtOjpjcmVhdGUoKTsKKyAgICBpZiAocmVzdWx0KQorICAg
ICAgICByZXN1bHQtPmNsZWFyKCk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBTVkdQYXRo
Qnl0ZVN0cmVhbTo6Y3JlYXRlKCk7CisKICAgICBpZiAobGlzdC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMjE5LDcgKzIyMywxMSBAQCBib29sIFNWR1BhdGhQYXJzZXJG
YWN0b3J5OjpidWlsZFN0cmluZ0ZyCiAKIGJvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmJ1aWxk
U1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgZCwgT3duUHRyPFNWR1Bh
dGhCeXRlU3RyZWFtPiYgcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCiB7Ci0g
ICAgcmVzdWx0ID0gU1ZHUGF0aEJ5dGVTdHJlYW06OmNyZWF0ZSgpOworICAgIGlmIChyZXN1bHQp
CisgICAgICAgIHJlc3VsdC0+Y2xlYXIoKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFNW
R1BhdGhCeXRlU3RyZWFtOjpjcmVhdGUoKTsKKwogICAgIGlmIChkLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yMzYsNyArMjQ0LDExIEBAIGJvb2wgU1ZHUGF0aFBhcnNl
ckZhY3Rvcnk6OmJ1aWxkQW5pbWF0ZWQKIHsKICAgICBBU1NFUlQoZnJvbVN0cmVhbSk7CiAgICAg
QVNTRVJUKHRvU3RyZWFtKTsKLSAgICByZXN1bHQgPSBTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRl
KCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmVzdWx0LT5jbGVhcigpOworICAgIGVsc2UK
KyAgICAgICAgcmVzdWx0ID0gU1ZHUGF0aEJ5dGVTdHJlYW06OmNyZWF0ZSgpOworCiAgICAgaWYg
KGZyb21TdHJlYW0tPmlzRW1wdHkoKSB8fCB0b1N0cmVhbS0+aXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAK
</data>
<flag name="review"
          id="92860"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>