<?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>32529</bug_id>
          
          <creation_ts>2009-12-14 13:05:15 -0800</creation_ts>
          <short_desc>Rename skipCanLoadCheck to skipSecurityCheck</short_desc>
          <delta_ts>2009-12-16 11:34:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>30457</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>171522</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-14 13:05:15 -0800</bug_when>
    <thetext>First step of https://bugs.webkit.org/show_bug.cgi?id=30457.  The next step will include separating the can load check into the security check and a check as to whether the current subresource load should be allowed to outlive the page that spawned it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171528</commentid>
    <comment_count>1</comment_count>
      <attachid>44813</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-14 13:09:25 -0800</bug_when>
    <thetext>Created attachment 44813
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171536</commentid>
    <comment_count>2</comment_count>
      <attachid>44813</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-14 13:18:50 -0800</bug_when>
    <thetext>Comment on attachment 44813
patch

This looks good to me.  Sooooo much more readable!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171538</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-12-14 13:22:05 -0800</bug_when>
    <thetext>I think Sam should look at this before it lands, he&apos;s the most likely to have an opinion on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171613</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-14 15:50:52 -0800</bug_when>
    <thetext>I&apos;m not sure this is the optimal name, but it&apos;s lightyears better than what we have currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171636</commentid>
    <comment_count>5</comment_count>
      <attachid>44813</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-14 17:19:24 -0800</bug_when>
    <thetext>Comment on attachment 44813
patch

&gt; +        void load(DocLoader*, CachedResource*, bool incremental = true, SecurityCheck securityCheck = DoSecurityCheck, bool sendResourceLoadCallbacks = true);

One of the great things about using a named type is that you can, and should, leave out the argument name in cases like this one.
&gt;  
&gt; +    void load(DocLoader*, bool incremental, SecurityCheck securityCheck, bool sendResourceLoadCallbacks);

And this one.
&gt;  
&gt; +        Request(DocLoader*, CachedResource*, bool incremental, SecurityCheck securityCheck, bool sendResourceLoadCallbacks);

And this one.

&gt; +        SecurityCheck shouldDoSecurityCheck() const { return m_securityCheck; }

The data member and the function member should have the same name.

&gt; +        void loadRequest(const ResourceRequest&amp;, SecurityCheck securityCheck);

Another place where you can omit the argument name.

&gt; +    if ((securityCheck == DoSecurityCheck) &amp;&amp; (fl-&gt;state() == FrameStateProvisional || fl-&gt;activeDocumentLoader()-&gt;isStopping()))

We normally would not include the parentheses around the &quot;==&quot; expression. It&apos;s so idiomatic to combine &quot;==&quot; with &quot;&amp;&amp;&quot; and &quot;||&quot; that we don&apos;t feel we need parentheses to make it clear.

&gt; +    if ((securityCheck == DoSecurityCheck)

Ditto.

&gt; +    // ok to skip load check since we already asked about the preflight request

Would be nice to format this comment as a sentence, which is our preferred style.

&gt; +        static PassRefPtr&lt;SubresourceLoader&gt; create(Frame*, SubresourceLoaderClient*, const ResourceRequest&amp;, SecurityCheck securityCheck = DoSecurityCheck, bool sendResourceLoadCallbacks = true, bool shouldContentSniff = true);

Another place to omit the argument name.

I feel bad about suggesting FrameLoaderTypes for this. Wish I could have thought of a better header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171885</commentid>
    <comment_count>6</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-15 09:01:45 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 44813 [details])
&gt; &gt; +        void load(DocLoader*, CachedResource*, bool incremental = true, SecurityCheck securityCheck = DoSecurityCheck, bool sendResourceLoadCallbacks = true);
&gt; 
&gt; One of the great things about using a named type is that you can, and should,
&gt; leave out the argument name in cases like this one.
&gt; &gt;  
&gt; &gt; +    void load(DocLoader*, bool incremental, SecurityCheck securityCheck, bool sendResourceLoadCallbacks);
&gt; 
&gt; And this one.
&gt; &gt;  
&gt; &gt; +        Request(DocLoader*, CachedResource*, bool incremental, SecurityCheck securityCheck, bool sendResourceLoadCallbacks);
&gt; 
&gt; And this one.
&gt; 
&gt; &gt; +        SecurityCheck shouldDoSecurityCheck() const { return m_securityCheck; }
&gt; 
&gt; The data member and the function member should have the same name.
&gt; 
&gt; &gt; +        void loadRequest(const ResourceRequest&amp;, SecurityCheck securityCheck);
&gt; 
&gt; Another place where you can omit the argument name.
&gt; 
&gt; &gt; +    if ((securityCheck == DoSecurityCheck) &amp;&amp; (fl-&gt;state() == FrameStateProvisional || fl-&gt;activeDocumentLoader()-&gt;isStopping()))
&gt; 
&gt; We normally would not include the parentheses around the &quot;==&quot; expression. It&apos;s
&gt; so idiomatic to combine &quot;==&quot; with &quot;&amp;&amp;&quot; and &quot;||&quot; that we don&apos;t feel we need
&gt; parentheses to make it clear.
&gt; 
&gt; &gt; +    if ((securityCheck == DoSecurityCheck)
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; +    // ok to skip load check since we already asked about the preflight request
&gt; 
&gt; Would be nice to format this comment as a sentence, which is our preferred
&gt; style.
&gt; 
&gt; &gt; +        static PassRefPtr&lt;SubresourceLoader&gt; create(Frame*, SubresourceLoaderClient*, const ResourceRequest&amp;, SecurityCheck securityCheck = DoSecurityCheck, bool sendResourceLoadCallbacks = true, bool shouldContentSniff = true);
&gt; 
&gt; Another place to omit the argument name.
&gt; 
&gt; I feel bad about suggesting FrameLoaderTypes for this. Wish I could have
&gt; thought of a better header.

All are now done locally.

These changes seem pretty trivial to me, do you want me to upload and go through another review cycle or just submit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171948</commentid>
    <comment_count>7</comment_count>
      <attachid>44891</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-15 11:31:43 -0800</bug_when>
    <thetext>Created attachment 44891
patch2

Better safe than sorry, here&apos;s the patch with darin&apos;s comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171950</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-15 11:32:09 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44891 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172013</commentid>
    <comment_count>9</comment_count>
      <attachid>44891</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-15 13:59:03 -0800</bug_when>
    <thetext>Comment on attachment 44891
patch2

Sorry, I&apos;m not trying to be difficult, but I see a problem now introduced by the changes I suggested.

&gt; +    enum SecurityCheck {
&gt; +        DoSecurityCheck,
&gt; +        SkipSecurityCheck
&gt; +    };

&gt; -        bool shouldSkipCanLoadCheck() const { return m_shouldSkipCanLoadCheck; }
&gt; +        SecurityCheck shouldDoSecurityCheck() const { return m_shouldDoSecurityCheck; }

This is a risky combination. The value of DoSecurityCheck is 0 and SkipSecurityCheck is 1, so this code:

    if (object-&gt;shouldDoSecurityCheck())

would look right, but be wrong. We should make the name of the function and data member be shouldSkipSecurityCheck or something neutral like securityCheckPolicy that does not imply a true/false mapping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172015</commentid>
    <comment_count>10</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-15 14:01:04 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 44891 [details])
&gt; Sorry, I&apos;m not trying to be difficult, but I see a problem now introduced by
&gt; the changes I suggested.
&gt; 
&gt; &gt; +    enum SecurityCheck {
&gt; &gt; +        DoSecurityCheck,
&gt; &gt; +        SkipSecurityCheck
&gt; &gt; +    };
&gt; 
&gt; &gt; -        bool shouldSkipCanLoadCheck() const { return m_shouldSkipCanLoadCheck; }
&gt; &gt; +        SecurityCheck shouldDoSecurityCheck() const { return m_shouldDoSecurityCheck; }
&gt; 
&gt; This is a risky combination. The value of DoSecurityCheck is 0 and
&gt; SkipSecurityCheck is 1, so this code:
&gt; 
&gt;     if (object-&gt;shouldDoSecurityCheck())
&gt; 
&gt; would look right, but be wrong. We should make the name of the function and
&gt; data member be shouldSkipSecurityCheck or something neutral like
&gt; securityCheckPolicy that does not imply a true/false mapping.

Good point.  Do you have a preference on renaming vs. switching the ordering in the enum so SkipSecurityCheck is 0 and DoSecurityCheck is 1?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172018</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-15 14:03:14 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Good point. Do you have a preference on renaming vs. switching the ordering in
&gt; the enum so SkipSecurityCheck is 0 and DoSecurityCheck is 1?

I slightly prefer switching the ordering, because I think an affirmative “do the check” is an easier concept than “skip the check”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172019</commentid>
    <comment_count>12</comment_count>
      <attachid>44909</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-15 14:06:43 -0800</bug_when>
    <thetext>Created attachment 44909
patch3 - reordered SecurityCheck enum</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172023</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-15 14:08:03 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44909 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172025</commentid>
    <comment_count>14</comment_count>
      <attachid>44909</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-15 14:09:50 -0800</bug_when>
    <thetext>Comment on attachment 44909
patch3 - reordered SecurityCheck enum

This is great. r=me

Next time we name a type like this, we should consider how the type name works conceptually. The type is named SecurityCheck, yet the object is not a security check. It&apos;s a decision about whether security checks should be performed. I think I would have called the type SecurityCheckPolicy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172026</commentid>
    <comment_count>15</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-15 14:12:47 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 44909 [details])
&gt; This is great. r=me
&gt; 
&gt; Next time we name a type like this, we should consider how the type name works
&gt; conceptually. The type is named SecurityCheck, yet the object is not a security
&gt; check. It&apos;s a decision about whether security checks should be performed. I
&gt; think I would have called the type SecurityCheckPolicy.

Yeah, SecurityCheckPolicy is probably a better name.

I&apos;ll rename it if you&apos;re willing to suffer through another round of review :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172034</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-15 14:19:06 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; I&apos;ll rename it if you&apos;re willing to suffer through another round of review :)

I&apos;m game.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172049</commentid>
    <comment_count>17</comment_count>
      <attachid>44912</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-15 14:39:45 -0800</bug_when>
    <thetext>Created attachment 44912
patch4 - renamed to SecurityCheckPolicy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172434</commentid>
    <comment_count>18</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-16 11:34:38 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/52177

Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44813</attachid>
            <date>2009-12-14 13:09:25 -0800</date>
            <delta_ts>2009-12-15 11:31:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>15754</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjExMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMTItMTQgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW5hbWUgc2tpcENhbkxvYWRDaGVjayB0byBza2lwU2VjdXJpdHlDaGVjayBpbiBhIGJ1bmNoIG9m
IHBsYWNlcyBpbiBXZWJDb3JlL2xvYWRlci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MjkKKworICAgICAgICAqIGxvYWRlci9DYWNoZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KToKKyAg
ICAgICAgKiBsb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL0Nh
Y2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VT
aW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZs
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZs
aWdodFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgIChXZWJD
b3JlOjopOgorICAgICAgICAqIGxvYWRlci9SZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlcXVlc3Q6OlJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9SZXF1ZXN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpSZXF1ZXN0OjpzaG91bGREb1NlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIGxv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJj
ZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6
bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVl
c3RzKToKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmg6CisKIDIwMDktMTItMTQgIFNpbW9uIEhh
dXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBIb2xn
ZXIgRnJleXRoZXIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9sb2FkZXIuaAkocmV2aXNpb24gNTIxMTEpCisrKyBXZWJDb3JlL2xv
YWRlci9sb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVk
ZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nSW1wbC5oIgorI2luY2x1
ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAg
LTQzLDcgKzQ0LDcgQEAKICAgICAgICAgTG9hZGVyKCk7CiAgICAgICAgIH5Mb2FkZXIoKTsKIAot
ICAgICAgICB2b2lkIGxvYWQoRG9jTG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqLCBib29sIGluY3Jl
bWVudGFsID0gdHJ1ZSwgYm9vbCBza2lwQ2FuTG9hZENoZWNrID0gZmFsc2UsIGJvb2wgc2VuZFJl
c291cmNlTG9hZENhbGxiYWNrcyA9IHRydWUpOworICAgICAgICB2b2lkIGxvYWQoRG9jTG9hZGVy
KiwgQ2FjaGVkUmVzb3VyY2UqLCBib29sIGluY3JlbWVudGFsID0gdHJ1ZSwgU2VjdXJpdHlDaGVj
ayBzZWN1cml0eUNoZWNrID0gRG9TZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRD
YWxsYmFja3MgPSB0cnVlKTsKIAogICAgICAgICB2b2lkIGNhbmNlbFJlcXVlc3RzKERvY0xvYWRl
ciopOwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9u
IDUyMTExKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDIsNiArMTAyLDExIEBACiAgICAgICAgIFNhbmRib3hTY3JpcHRzID0gMSA8PCA0
LAogICAgICAgICBTYW5kYm94QWxsID0gLTEgLy8gTWFzayB3aXRoIGFsbCBiaXRzIHNldCB0byAx
LgogICAgIH07CisgICAgCisgICAgZW51bSBTZWN1cml0eUNoZWNrIHsKKyAgICAgICAgRG9TZWN1
cml0eUNoZWNrLAorICAgICAgICBTa2lwU2VjdXJpdHlDaGVjaworICAgIH07CiAKICAgICB0eXBl
ZGVmIGludCBTYW5kYm94RmxhZ3M7CiB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNv
dXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHJl
dmlzaW9uIDUyMTExKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBDYWNoZWRSZXNvdXJjZV9oCiAKICNp
bmNsdWRlICJDYWNoZVBvbGljeS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTc1LDggKzc2LDggQEAKICAgICBDYWNoZWRS
ZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgVHlwZSk7CiAgICAgdmlydHVhbCB+Q2FjaGVkUmVz
b3VyY2UoKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZChEb2NMb2FkZXIqIGRvY0xvYWRl
cikgIHsgbG9hZChkb2NMb2FkZXIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7IH0KLSAgICB2b2lkIGxv
YWQoRG9jTG9hZGVyKiwgYm9vbCBpbmNyZW1lbnRhbCwgYm9vbCBza2lwQ2FuTG9hZENoZWNrLCBi
b29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkKERv
Y0xvYWRlciogZG9jTG9hZGVyKSAgeyBsb2FkKGRvY0xvYWRlciwgZmFsc2UsIERvU2VjdXJpdHlD
aGVjaywgdHJ1ZSk7IH0KKyAgICB2b2lkIGxvYWQoRG9jTG9hZGVyKiwgYm9vbCBpbmNyZW1lbnRh
bCwgU2VjdXJpdHlDaGVjayBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxs
YmFja3MpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsg
fQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9SZXF1ZXN0LmgJKHJldmlzaW9uIDUyMTExKQorKysgV2ViQ29yZS9sb2FkZXIvUmVx
dWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaWZuZGVmIFJlcXVlc3Rf
aAogI2RlZmluZSBSZXF1ZXN0X2gKIAorI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMyLDcgKzMz
LDcgQEAKIAogICAgIGNsYXNzIFJlcXVlc3QgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgUmVxdWVzdChEb2NMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSosIGJvb2wg
aW5jcmVtZW50YWwsIGJvb2wgc2tpcENhbkxvYWRDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzKTsKKyAgICAgICAgUmVxdWVzdChEb2NMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSos
IGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hlY2sgc2VjdXJpdHlDaGVjaywgYm9vbCBzZW5k
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKTsKICAgICAgICAgflJlcXVlc3QoKTsKICAgICAgICAgCiAg
ICAgICAgIFZlY3RvcjxjaGFyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KQEAgLTQ1
LDcgKzQ2LDcgQEAKICAgICAgICAgYm9vbCBpc011bHRpcGFydCgpIHsgcmV0dXJuIG1fbXVsdGlw
YXJ0OyB9CiAgICAgICAgIHZvaWQgc2V0SXNNdWx0aXBhcnQoYm9vbCBiID0gdHJ1ZSkgeyBtX211
bHRpcGFydCA9IGI7IH0KIAotICAgICAgICBib29sIHNob3VsZFNraXBDYW5Mb2FkQ2hlY2soKSBj
b25zdCB7IHJldHVybiBtX3Nob3VsZFNraXBDYW5Mb2FkQ2hlY2s7IH0KKyAgICAgICAgU2VjdXJp
dHlDaGVjayBzaG91bGREb1NlY3VyaXR5Q2hlY2soKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5
Q2hlY2s7IH0KICAgICAgICAgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgY29uc3Qg
eyByZXR1cm4gbV9zZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzOyB9CiAgICAgICAgIAogICAgIHBy
aXZhdGU6CkBAIC01NCw3ICs1NSw3IEBACiAgICAgICAgIERvY0xvYWRlciogbV9kb2NMb2FkZXI7
CiAgICAgICAgIGJvb2wgbV9pbmNyZW1lbnRhbDsKICAgICAgICAgYm9vbCBtX211bHRpcGFydDsK
LSAgICAgICAgYm9vbCBtX3Nob3VsZFNraXBDYW5Mb2FkQ2hlY2s7CisgICAgICAgIFNlY3VyaXR5
Q2hlY2sgbV9zZWN1cml0eUNoZWNrOwogICAgICAgICBib29sIG1fc2VuZFJlc291cmNlTG9hZENh
bGxiYWNrczsKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiA1
MjExMSkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgi
CiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJG
cmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVx
dWVzdC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC04MSw3ICs4Miw3IEBACiB2b2lkIENh
Y2hlZEltYWdlOjpsb2FkKERvY0xvYWRlciogZG9jTG9hZGVyKQogewogICAgIGlmICghZG9jTG9h
ZGVyIHx8IGRvY0xvYWRlci0+YXV0b0xvYWRJbWFnZXMoKSkKLSAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OmxvYWQoZG9jTG9hZGVyLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIENhY2hlZFJl
c291cmNlOjpsb2FkKGRvY0xvYWRlciwgdHJ1ZSwgRG9TZWN1cml0eUNoZWNrLCB0cnVlKTsKICAg
ICBlbHNlCiAgICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOwogfQpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hl
ZFJlc291cmNlLmNwcAkocmV2aXNpb24gNTIxMTEpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRS
ZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMywxMCArMTAzLDEwIEBACiAgICAgICAg
IG1fZG9jTG9hZGVyLT5yZW1vdmVDYWNoZWRSZXNvdXJjZSh0aGlzKTsKIH0KICAgICAKLXZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmxvYWQoRG9jTG9hZGVyKiBkb2NMb2FkZXIsIGJvb2wgaW5jcmVtZW50
YWwsIGJvb2wgc2tpcENhbkxvYWRDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tz
KQordm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChEb2NMb2FkZXIqIGRvY0xvYWRlciwgYm9vbCBp
bmNyZW1lbnRhbCwgU2VjdXJpdHlDaGVjayBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJj
ZUxvYWRDYWxsYmFja3MpCiB7CiAgICAgbV9zZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gc2Vu
ZFJlc291cmNlTG9hZENhbGxiYWNrczsKLSAgICBjYWNoZSgpLT5sb2FkZXIoKS0+bG9hZChkb2NM
b2FkZXIsIHRoaXMsIGluY3JlbWVudGFsLCBza2lwQ2FuTG9hZENoZWNrLCBzZW5kUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzKTsKKyAgICBjYWNoZSgpLT5sb2FkZXIoKS0+bG9hZChkb2NMb2FkZXIsIHRo
aXMsIGluY3JlbWVudGFsLCBzZWN1cml0eUNoZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tz
KTsKICAgICBtX2xvYWRpbmcgPSB0cnVlOwogfQogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaAkocmV2aXNpb24gNTIxMTEpCisrKyBXZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
NyBAQAogI2lmbmRlZiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXJfaAogI2RlZmluZSBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXJfaAogCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2lu
Y2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxv
YWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTg1LDcgKzg2LDcgQEAKICAgICAg
ICAgdm9pZCBwcmVmbGlnaHRTdWNjZXNzKCk7CiAgICAgICAgIHZvaWQgcHJlZmxpZ2h0RmFpbHVy
ZSgpOwogCi0gICAgICAgIHZvaWQgbG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Ym9vbCBza2lwQ2FuTG9hZENoZWNrKTsKKyAgICAgICAgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eUNoZWNrIHNlY3VyaXR5Q2hlY2spOwogICAgICAgICBi
b29sIGlzQWxsb3dlZFJlZGlyZWN0KGNvbnN0IEtVUkwmKTsKIAogICAgICAgICBSZWZQdHI8U3Vi
cmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gNTIxMTEpCisrKyBXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDE4ICs2MSwxOCBAQAogI2VuZGlmCiB9CiAK
LVBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUo
RnJhbWUqIGZyYW1lLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc2tpcENhbkxvYWRDaGVjaywgYm9vbCBzZW5kUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlmZikKK1Bhc3NSZWZQdHI8
U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZyYW1l
LCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFNlY3VyaXR5Q2hlY2sgc2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzLCBib29sIHNob3VsZENvbnRlbnRTbmlmZikKIHsKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEZyYW1lTG9hZGVyKiBmbCA9IGZyYW1lLT5sb2Fk
ZXIoKTsKLSAgICBpZiAoIXNraXBDYW5Mb2FkQ2hlY2sgJiYgKGZsLT5zdGF0ZSgpID09IEZyYW1l
U3RhdGVQcm92aXNpb25hbCB8fCBmbC0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+aXNTdG9wcGlu
ZygpKSkKKyAgICBpZiAoKHNlY3VyaXR5Q2hlY2sgPT0gRG9TZWN1cml0eUNoZWNrKSAmJiAoZmwt
PnN0YXRlKCkgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsIHx8IGZsLT5hY3RpdmVEb2N1bWVudExv
YWRlcigpLT5pc1N0b3BwaW5nKCkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlc291cmNl
UmVxdWVzdCBuZXdSZXF1ZXN0ID0gcmVxdWVzdDsKIAotICAgIGlmICghc2tpcENhbkxvYWRDaGVj
aworICAgIGlmICgoc2VjdXJpdHlDaGVjayA9PSBEb1NlY3VyaXR5Q2hlY2spCiAgICAgICAgICAg
ICAmJiBTZWN1cml0eU9yaWdpbjo6cmVzdHJpY3RBY2Nlc3NUb0xvY2FsKCkKICAgICAgICAgICAg
ICYmICFTZWN1cml0eU9yaWdpbjo6Y2FuTG9hZChyZXF1ZXN0LnVybCgpLCBTdHJpbmcoKSwgZnJh
bWUtPmRvY3VtZW50KCkpKSB7CiAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRG
YWlsZWQoZnJhbWUsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkocmV2
aXNpb24gNTIxMTEpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJU
eXBlcy5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKQEAgLTE2NCw3ICsxNjUsNyBAQAogICAgICAgICAvLyBG
SVhNRTogQ2FjaGVkUmVzb3VyY2Ugc2hvdWxkIGp1c3QgdXNlIG5vcm1hbCByZWZjb3VudGluZyBp
bnN0ZWFkLgogICAgICAgICB1c2VyU2hlZXQtPnNldEluQ2FjaGUodHJ1ZSk7CiAgICAgICAgIC8v
IERvbid0IGxvYWQgaW5jcmVtZW50YWxseSwgc2tpcCBsb2FkIGNoZWNrcywgZG9uJ3Qgc2VuZCBy
ZXNvdXJjZSBsb2FkIGNhbGxiYWNrcy4KLSAgICAgICAgdXNlclNoZWV0LT5sb2FkKGRvY0xvYWRl
ciwgZmFsc2UsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgdXNlclNoZWV0LT5sb2FkKGRvY0xvYWRl
ciwgZmFsc2UsIFNraXBTZWN1cml0eUNoZWNrLCBmYWxzZSk7CiAgICAgICAgIGlmICghZGlzYWJs
ZWQoKSkKICAgICAgICAgICAgIG1fcmVzb3VyY2VzLnNldCh1cmwsIHVzZXJTaGVldCk7CiAgICAg
ICAgIGVsc2UKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAkocmV2aXNpb24gNTIxMTEpCisrKyBXZWJDb3JlL2xv
YWRlci9sb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsMTAgKzExNywxMCBAQAogI2Vu
ZGlmCiB9CiAKLXZvaWQgTG9hZGVyOjpsb2FkKERvY0xvYWRlciogZG9jTG9hZGVyLCBDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UsIGJvb2wgaW5jcmVtZW50YWwsIGJvb2wgc2tpcENhbkxvYWRDaGVj
aywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKQordm9pZCBMb2FkZXI6OmxvYWQoRG9j
TG9hZGVyKiBkb2NMb2FkZXIsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgYm9vbCBpbmNyZW1l
bnRhbCwgU2VjdXJpdHlDaGVjayBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRD
YWxsYmFja3MpCiB7CiAgICAgQVNTRVJUKGRvY0xvYWRlcik7Ci0gICAgUmVxdWVzdCogcmVxdWVz
dCA9IG5ldyBSZXF1ZXN0KGRvY0xvYWRlciwgcmVzb3VyY2UsIGluY3JlbWVudGFsLCBza2lwQ2Fu
TG9hZENoZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKTsKKyAgICBSZXF1ZXN0KiByZXF1
ZXN0ID0gbmV3IFJlcXVlc3QoZG9jTG9hZGVyLCByZXNvdXJjZSwgaW5jcmVtZW50YWwsIHNlY3Vy
aXR5Q2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpOwogCiAgICAgUmVmUHRyPEhvc3Q+
IGhvc3Q7CiAgICAgS1VSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCByZXNvdXJjZS0+dXJsKCkpOwpA
QCAtMzQ3LDcgKzM0Nyw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZG9jTG9hZGVyLT5k
b2MoKS0+ZnJhbWUoKSwKLSAgICAgICAgICAgIHRoaXMsIHJlc291cmNlUmVxdWVzdCwgcmVxdWVz
dC0+c2hvdWxkU2tpcENhbkxvYWRDaGVjaygpLCByZXF1ZXN0LT5zZW5kUmVzb3VyY2VMb2FkQ2Fs
bGJhY2tzKCkpOworICAgICAgICAgICAgdGhpcywgcmVzb3VyY2VSZXF1ZXN0LCByZXF1ZXN0LT5z
aG91bGREb1NlY3VyaXR5Q2hlY2soKSwgcmVxdWVzdC0+c2VuZFJlc291cmNlTG9hZENhbGxiYWNr
cygpKTsKICAgICAgICAgaWYgKGxvYWRlcikgewogICAgICAgICAgICAgbV9yZXF1ZXN0c0xvYWRp
bmcuYWRkKGxvYWRlci5yZWxlYXNlKCksIHJlcXVlc3QpOwogICAgICAgICAgICAgcmVxdWVzdC0+
Y2FjaGVkUmVzb3VyY2UoKS0+c2V0UmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllcigpOwpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lv
biA1MjExMSkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDggKzcwLDcgQEAKICAgICBBU1NFUlQoY2xpZW50KTsKIAog
ICAgIGlmIChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8IG1fb3B0aW9ucy5jcm9zc09yaWdpblJlcXVl
c3RQb2xpY3kgPT0gQWxsb3dDcm9zc09yaWdpblJlcXVlc3RzKSB7Ci0gICAgICAgIGJvb2wgc2tp
cENhbkxvYWRDaGVjayA9IGZhbHNlOwotICAgICAgICBsb2FkUmVxdWVzdChyZXF1ZXN0LCBza2lw
Q2FuTG9hZENoZWNrKTsKKyAgICAgICAgbG9hZFJlcXVlc3QocmVxdWVzdCwgRG9TZWN1cml0eUNo
ZWNrKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTExLDggKzExMCw3IEBACiAgICAg
Y3Jvc3NPcmlnaW5SZXF1ZXN0LnNldEFsbG93Q29va2llcyhtX29wdGlvbnMuYWxsb3dDcmVkZW50
aWFscyk7CiAgICAgY3Jvc3NPcmlnaW5SZXF1ZXN0LnNldEhUVFBPcmlnaW4obV9kb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7CiAKLSAgICBib29sIHNraXBDYW5Mb2FkQ2hl
Y2sgPSBmYWxzZTsKLSAgICBsb2FkUmVxdWVzdChjcm9zc09yaWdpblJlcXVlc3QsIHNraXBDYW5M
b2FkQ2hlY2spOworICAgIGxvYWRSZXF1ZXN0KGNyb3NzT3JpZ2luUmVxdWVzdCwgRG9TZWN1cml0
eUNoZWNrKTsKIH0KIAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zc09y
aWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKQEAgLTE0Miw4ICsxNDAsNyBAQAogICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZCgiQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXJzIiwgU3RyaW5nOjph
ZG9wdChoZWFkZXJCdWZmZXIpKTsKICAgICB9CiAKLSAgICBib29sIHNraXBDYW5Mb2FkQ2hlY2sg
PSBmYWxzZTsKLSAgICBsb2FkUmVxdWVzdChwcmVmbGlnaHRSZXF1ZXN0LCBza2lwQ2FuTG9hZENo
ZWNrKTsKKyAgICBsb2FkUmVxdWVzdChwcmVmbGlnaHRSZXF1ZXN0LCBEb1NlY3VyaXR5Q2hlY2sp
OwogfQogCiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6On5Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIoKQpAQCAtMjg0LDggKzI4MSw4IEBACiAgICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gYWN0
dWFsUmVxdWVzdDsKICAgICBhY3R1YWxSZXF1ZXN0LnN3YXAobV9hY3R1YWxSZXF1ZXN0KTsKIAot
ICAgIGJvb2wgc2tpcENhbkxvYWRDaGVjayA9IHRydWU7ICAvLyBvayB0byBza2lwIGxvYWQgY2hl
Y2sgc2luY2Ugd2UgYWxyZWFkeSBhc2tlZCBhYm91dCB0aGUgcHJlZmxpZ2h0IHJlcXVlc3QKLSAg
ICBsb2FkUmVxdWVzdCgqYWN0dWFsUmVxdWVzdCwgc2tpcENhbkxvYWRDaGVjayk7CisgICAgLy8g
b2sgdG8gc2tpcCBsb2FkIGNoZWNrIHNpbmNlIHdlIGFscmVhZHkgYXNrZWQgYWJvdXQgdGhlIHBy
ZWZsaWdodCByZXF1ZXN0CisgICAgbG9hZFJlcXVlc3QoKmFjdHVhbFJlcXVlc3QsIFNraXBTZWN1
cml0eUNoZWNrKTsKIH0KIAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdo
dEZhaWx1cmUoKQpAQCAtMjkzLDcgKzI5MCw3IEBACiAgICAgbV9jbGllbnQtPmRpZEZhaWwoUmVz
b3VyY2VFcnJvcigpKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBza2lwQ2FuTG9hZENo
ZWNrKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlDaGVjayBzZWN1cml0eUNoZWNrKQogewog
ICAgIGlmIChtX2FzeW5jKSB7CiAgICAgICAgIC8vIERvbid0IHNuaWZmIGNvbnRlbnQgb3Igc2Vu
ZCBsb2FkIGNhbGxiYWNrcyBmb3IgdGhlIHByZWZsaWdodCByZXF1ZXN0LgpAQCAtMzAyLDcgKzI5
OSw3IEBACiAKICAgICAgICAgLy8gQ2xlYXIgdGhlIGxvYWRlciBzbyB0aGF0IGFueSBjYWxsYmFj
a3MgZnJvbSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlIHdpbGwgbm90IGhhdmUgdGhlIG9sZCBs
b2FkZXIuCiAgICAgICAgIG1fbG9hZGVyID0gMDsKLSAgICAgICAgbV9sb2FkZXIgPSBTdWJyZXNv
dXJjZUxvYWRlcjo6Y3JlYXRlKG1fZG9jdW1lbnQtPmZyYW1lKCksIHRoaXMsIHJlcXVlc3QsIHNr
aXBDYW5Mb2FkQ2hlY2ssIHNlbmRMb2FkQ2FsbGJhY2tzLCBzbmlmZkNvbnRlbnQpOworICAgICAg
ICBtX2xvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9kb2N1bWVudC0+ZnJhbWUo
KSwgdGhpcywgcmVxdWVzdCwgc2VjdXJpdHlDaGVjaywgc2VuZExvYWRDYWxsYmFja3MsIHNuaWZm
Q29udGVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkluZGV4OiBXZWJDb3JlL2xv
YWRlci9SZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9SZXF1ZXN0LmNw
cAkocmV2aXNpb24gNTIxMTEpCisrKyBXZWJDb3JlL2xvYWRlci9SZXF1ZXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTIgKzI4LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVx
dWVzdDo6UmVxdWVzdChEb2NMb2FkZXIqIGRvY0xvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIG9iamVj
dCwgYm9vbCBpbmNyZW1lbnRhbCwgYm9vbCBzaG91bGRTa2lwQ2FuTG9hZENoZWNrLCBib29sIHNl
bmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpCitSZXF1ZXN0OjpSZXF1ZXN0KERvY0xvYWRlciogZG9j
TG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogb2JqZWN0LCBib29sIGluY3JlbWVudGFsLCBTZWN1cml0
eUNoZWNrIHNlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcykKICAg
ICA6IG1fb2JqZWN0KG9iamVjdCkKICAgICAsIG1fZG9jTG9hZGVyKGRvY0xvYWRlcikKICAgICAs
IG1faW5jcmVtZW50YWwoaW5jcmVtZW50YWwpCiAgICAgLCBtX211bHRpcGFydChmYWxzZSkKLSAg
ICAsIG1fc2hvdWxkU2tpcENhbkxvYWRDaGVjayhzaG91bGRTa2lwQ2FuTG9hZENoZWNrKQorICAg
ICwgbV9zZWN1cml0eUNoZWNrKHNlY3VyaXR5Q2hlY2spCiAgICAgLCBtX3NlbmRSZXNvdXJjZUxv
YWRDYWxsYmFja3Moc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcykKIHsKICAgICBtX29iamVjdC0+
c2V0UmVxdWVzdCh0aGlzKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2
aXNpb24gNTIxMTEpCisrKyBXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw4IEBACiAKICNpZm5kZWYgU3VicmVzb3VyY2VMb2FkZXJf
aAogI2RlZmluZSBTdWJyZXNvdXJjZUxvYWRlcl9oCi0gCisKKyNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTM4LDcgKzM5LDcgQEAKICAgICAKICAgICBjbGFzcyBTdWJyZXNvdXJjZUxvYWRl
ciA6IHB1YmxpYyBSZXNvdXJjZUxvYWRlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgU3VicmVzb3VyY2VM
b2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBib29sIHNraXBDYW5Mb2FkQ2hl
Y2sgPSBmYWxzZSwgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZSwgYm9vbCBz
aG91bGRDb250ZW50U25pZmYgPSB0cnVlKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Vi
cmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50Kiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlDaGVjayBzZWN1cml0eUNoZWNrID0gRG9T
ZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlLCBib29s
IHNob3VsZENvbnRlbnRTbmlmZiA9IHRydWUpOwogCiAgICAgICAgIHZvaWQgY2xlYXJDbGllbnQo
KSB7IG1fY2xpZW50ID0gMDsgfQogCg==
</data>
<flag name="review"
          id="26726"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44891</attachid>
            <date>2009-12-15 11:31:43 -0800</date>
            <delta_ts>2009-12-15 14:06:43 -0800</delta_ts>
            <desc>patch2</desc>
            <filename>patch2.txt</filename>
            <type>text/plain</type>
            <size>15733</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjE1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMTItMTUgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBSZW5h
bWUgc2tpcENhbkxvYWRDaGVjayB0byBza2lwU2VjdXJpdHlDaGVjayBpbiBhIGJ1bmNoIG9mIHBs
YWNlcyBpbiBXZWJDb3JlL2xvYWRlci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MjkKKworICAgICAgICAqIGxvYWRlci9DYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBsb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VTaW1w
bGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdo
dFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjopOgorICAgICAgICAqIGxvYWRlci9SZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
cXVlc3Q6OlJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9SZXF1ZXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXF1ZXN0OjpzaG91bGREb1NlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIGxvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3Rz
KToKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmg6CisKIDIwMDktMTItMTUgIFpvbHRhbiBIb3J2
YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCShyZXZpc2lvbiA1MjE1OCkKKysr
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAy
LDYgKzEwMiwxMSBAQAogICAgICAgICBTYW5kYm94U2NyaXB0cyA9IDEgPDwgNCwKICAgICAgICAg
U2FuZGJveEFsbCA9IC0xIC8vIE1hc2sgd2l0aCBhbGwgYml0cyBzZXQgdG8gMS4KICAgICB9Owor
ICAgIAorICAgIGVudW0gU2VjdXJpdHlDaGVjayB7CisgICAgICAgIERvU2VjdXJpdHlDaGVjaywK
KyAgICAgICAgU2tpcFNlY3VyaXR5Q2hlY2sKKyAgICB9OwogCiAgICAgdHlwZWRlZiBpbnQgU2Fu
ZGJveEZsYWdzOwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgJKHJldmlzaW9uIDUyMTU4KQorKysgV2ViQ29yZS9s
b2FkZXIvbG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1
ZGUgIkF0b21pY1N0cmluZy5oIgogI2luY2x1ZGUgIkF0b21pY1N0cmluZ0ltcGwuaCIKKyNpbmNs
dWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNp
bmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBA
IC00Myw3ICs0NCw3IEBACiAgICAgICAgIExvYWRlcigpOwogICAgICAgICB+TG9hZGVyKCk7CiAK
LSAgICAgICAgdm9pZCBsb2FkKERvY0xvYWRlciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNy
ZW1lbnRhbCA9IHRydWUsIGJvb2wgc2tpcENhbkxvYWRDaGVjayA9IGZhbHNlLCBib29sIHNlbmRS
ZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlKTsKKyAgICAgICAgdm9pZCBsb2FkKERvY0xvYWRl
ciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNyZW1lbnRhbCA9IHRydWUsIFNlY3VyaXR5Q2hl
Y2sgPSBEb1NlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyA9IHRy
dWUpOwogCiAgICAgICAgIHZvaWQgY2FuY2VsUmVxdWVzdHMoRG9jTG9hZGVyKik7CiAgICAgICAg
IApJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA1MjE1OCkKKysrIFdlYkNv
cmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcg
QEAKICNkZWZpbmUgQ2FjaGVkUmVzb3VyY2VfaAogCiAjaW5jbHVkZSAiQ2FjaGVQb2xpY3kuaCIK
KyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCkBAIC03NSw4ICs3Niw4IEBACiAgICAgQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1
cmwsIFR5cGUpOwogICAgIHZpcnR1YWwgfkNhY2hlZFJlc291cmNlKCk7CiAgICAgCi0gICAgdmly
dHVhbCB2b2lkIGxvYWQoRG9jTG9hZGVyKiBkb2NMb2FkZXIpICB7IGxvYWQoZG9jTG9hZGVyLCBm
YWxzZSwgZmFsc2UsIHRydWUpOyB9Ci0gICAgdm9pZCBsb2FkKERvY0xvYWRlciosIGJvb2wgaW5j
cmVtZW50YWwsIGJvb2wgc2tpcENhbkxvYWRDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2Fs
bGJhY2tzKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChEb2NMb2FkZXIqIGRvY0xvYWRlcikgIHsg
bG9hZChkb2NMb2FkZXIsIGZhbHNlLCBEb1NlY3VyaXR5Q2hlY2ssIHRydWUpOyB9CisgICAgdm9p
ZCBsb2FkKERvY0xvYWRlciosIGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hlY2ssIGJvb2wg
c2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25z
dCB7IHJldHVybiBTdHJpbmcoKTsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvUmVxdWVzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuaAkocmV2aXNpb24gNTIxNTgpCisr
KyBXZWJDb3JlL2xvYWRlci9SZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcg
QEAKICNpZm5kZWYgUmVxdWVzdF9oCiAjZGVmaW5lIFJlcXVlc3RfaAogCisjaW5jbHVkZSAiRnJh
bWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzIsNyArMzMsNyBAQAogCiAgICAgY2xhc3MgUmVxdWVzdCA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBSZXF1ZXN0KERvY0xvYWRlciosIENh
Y2hlZFJlc291cmNlKiwgYm9vbCBpbmNyZW1lbnRhbCwgYm9vbCBza2lwQ2FuTG9hZENoZWNrLCBi
b29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpOworICAgICAgICBSZXF1ZXN0KERvY0xvYWRl
ciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNyZW1lbnRhbCwgU2VjdXJpdHlDaGVjaywgYm9v
bCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKTsKICAgICAgICAgflJlcXVlc3QoKTsKICAgICAg
ICAgCiAgICAgICAgIFZlY3RvcjxjaGFyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0K
QEAgLTQ1LDcgKzQ2LDcgQEAKICAgICAgICAgYm9vbCBpc011bHRpcGFydCgpIHsgcmV0dXJuIG1f
bXVsdGlwYXJ0OyB9CiAgICAgICAgIHZvaWQgc2V0SXNNdWx0aXBhcnQoYm9vbCBiID0gdHJ1ZSkg
eyBtX211bHRpcGFydCA9IGI7IH0KIAotICAgICAgICBib29sIHNob3VsZFNraXBDYW5Mb2FkQ2hl
Y2soKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFNraXBDYW5Mb2FkQ2hlY2s7IH0KKyAgICAgICAg
U2VjdXJpdHlDaGVjayBzaG91bGREb1NlY3VyaXR5Q2hlY2soKSBjb25zdCB7IHJldHVybiBtX3No
b3VsZERvU2VjdXJpdHlDaGVjazsgfQogICAgICAgICBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxs
YmFja3MoKSBjb25zdCB7IHJldHVybiBtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3M7IH0KICAg
ICAgICAgCiAgICAgcHJpdmF0ZToKQEAgLTU0LDcgKzU1LDcgQEAKICAgICAgICAgRG9jTG9hZGVy
KiBtX2RvY0xvYWRlcjsKICAgICAgICAgYm9vbCBtX2luY3JlbWVudGFsOwogICAgICAgICBib29s
IG1fbXVsdGlwYXJ0OwotICAgICAgICBib29sIG1fc2hvdWxkU2tpcENhbkxvYWRDaGVjazsKKyAg
ICAgICAgU2VjdXJpdHlDaGVjayBtX3Nob3VsZERvU2VjdXJpdHlDaGVjazsKICAgICAgICAgYm9v
bCBtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3M7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9s
b2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hl
ZEltYWdlLmNwcAkocmV2aXNpb24gNTIxNTgpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIlJlcXVlc3QuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAt
ODEsNyArODIsNyBAQAogdm9pZCBDYWNoZWRJbWFnZTo6bG9hZChEb2NMb2FkZXIqIGRvY0xvYWRl
cikKIHsKICAgICBpZiAoIWRvY0xvYWRlciB8fCBkb2NMb2FkZXItPmF1dG9Mb2FkSW1hZ2VzKCkp
Ci0gICAgICAgIENhY2hlZFJlc291cmNlOjpsb2FkKGRvY0xvYWRlciwgdHJ1ZSwgZmFsc2UsIHRy
dWUpOworICAgICAgICBDYWNoZWRSZXNvdXJjZTo6bG9hZChkb2NMb2FkZXIsIHRydWUsIERvU2Vj
dXJpdHlDaGVjaywgdHJ1ZSk7CiAgICAgZWxzZQogICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsK
IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDUyMTU4KQorKysg
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMs
MTAgKzEwMywxMCBAQAogICAgICAgICBtX2RvY0xvYWRlci0+cmVtb3ZlQ2FjaGVkUmVzb3VyY2Uo
dGhpcyk7CiB9CiAgICAgCi12b2lkIENhY2hlZFJlc291cmNlOjpsb2FkKERvY0xvYWRlciogZG9j
TG9hZGVyLCBib29sIGluY3JlbWVudGFsLCBib29sIHNraXBDYW5Mb2FkQ2hlY2ssIGJvb2wgc2Vu
ZFJlc291cmNlTG9hZENhbGxiYWNrcykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoRG9jTG9h
ZGVyKiBkb2NMb2FkZXIsIGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hlY2sgc2VjdXJpdHlD
aGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKQogewogICAgIG1fc2VuZFJlc291
cmNlTG9hZENhbGxiYWNrcyA9IHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3M7Ci0gICAgY2FjaGUo
KS0+bG9hZGVyKCktPmxvYWQoZG9jTG9hZGVyLCB0aGlzLCBpbmNyZW1lbnRhbCwgc2tpcENhbkxv
YWRDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CisgICAgY2FjaGUoKS0+bG9hZGVy
KCktPmxvYWQoZG9jTG9hZGVyLCB0aGlzLCBpbmNyZW1lbnRhbCwgc2VjdXJpdHlDaGVjaywgc2Vu
ZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CiAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKIH0KIApJbmRl
eDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDUy
MTU4KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyX2gKICNkZWZpbmUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyX2gKIAorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBA
IC04NSw3ICs4Niw3IEBACiAgICAgICAgIHZvaWQgcHJlZmxpZ2h0U3VjY2VzcygpOwogICAgICAg
ICB2b2lkIHByZWZsaWdodEZhaWx1cmUoKTsKIAotICAgICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgc2tpcENhbkxvYWRDaGVjayk7CisgICAgICAgIHZv
aWQgbG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlDaGVjayk7CiAg
ICAgICAgIGJvb2wgaXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgS1VSTCYpOwogCiAgICAgICAgIFJl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA1MjE1OCkKKysrIFdlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTggKzYxLDE4IEBACiAjZW5k
aWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZShGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBza2lwQ2FuTG9hZENoZWNrLCBib29s
IHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQorUGFz
c1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFt
ZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlDaGVjayBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRS
ZXNvdXJjZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQogewogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgRnJhbWVMb2FkZXIqIGZsID0gZnJh
bWUtPmxvYWRlcigpOwotICAgIGlmICghc2tpcENhbkxvYWRDaGVjayAmJiAoZmwtPnN0YXRlKCkg
PT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsIHx8IGZsLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5p
c1N0b3BwaW5nKCkpKQorICAgIGlmIChzZWN1cml0eUNoZWNrID09IERvU2VjdXJpdHlDaGVjayAm
JiAoZmwtPnN0YXRlKCkgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsIHx8IGZsLT5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJl
c291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gcmVxdWVzdDsKIAotICAgIGlmICghc2tpcENhbkxv
YWRDaGVjaworICAgIGlmIChzZWN1cml0eUNoZWNrID09IERvU2VjdXJpdHlDaGVjawogICAgICAg
ICAgICAgJiYgU2VjdXJpdHlPcmlnaW46OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpCiAgICAgICAg
ICAgICAmJiAhU2VjdXJpdHlPcmlnaW46OmNhbkxvYWQocmVxdWVzdC51cmwoKSwgU3RyaW5nKCks
IGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxM
b2FkRmFpbGVkKGZyYW1lLCByZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJ
KHJldmlzaW9uIDUyMTU4KQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbWFnZS5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC0xNjQsNyArMTY1LDcgQEAKICAgICAgICAg
Ly8gRklYTUU6IENhY2hlZFJlc291cmNlIHNob3VsZCBqdXN0IHVzZSBub3JtYWwgcmVmY291bnRp
bmcgaW5zdGVhZC4KICAgICAgICAgdXNlclNoZWV0LT5zZXRJbkNhY2hlKHRydWUpOwogICAgICAg
ICAvLyBEb24ndCBsb2FkIGluY3JlbWVudGFsbHksIHNraXAgbG9hZCBjaGVja3MsIGRvbid0IHNl
bmQgcmVzb3VyY2UgbG9hZCBjYWxsYmFja3MuCi0gICAgICAgIHVzZXJTaGVldC0+bG9hZChkb2NM
b2FkZXIsIGZhbHNlLCB0cnVlLCBmYWxzZSk7CisgICAgICAgIHVzZXJTaGVldC0+bG9hZChkb2NM
b2FkZXIsIGZhbHNlLCBTa2lwU2VjdXJpdHlDaGVjaywgZmFsc2UpOwogICAgICAgICBpZiAoIWRp
c2FibGVkKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlcy5zZXQodXJsLCB1c2VyU2hlZXQpOwog
ICAgICAgICBlbHNlCkluZGV4OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAJKHJldmlzaW9uIDUyMTU4KQorKysgV2ViQ29y
ZS9sb2FkZXIvbG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDEwICsxMTcsMTAgQEAK
ICNlbmRpZgogfQogCi12b2lkIExvYWRlcjo6bG9hZChEb2NMb2FkZXIqIGRvY0xvYWRlciwgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBib29sIGluY3JlbWVudGFsLCBib29sIHNraXBDYW5Mb2Fk
Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcykKK3ZvaWQgTG9hZGVyOjpsb2Fk
KERvY0xvYWRlciogZG9jTG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGJvb2wgaW5j
cmVtZW50YWwsIFNlY3VyaXR5Q2hlY2sgc2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzKQogewogICAgIEFTU0VSVChkb2NMb2FkZXIpOwotICAgIFJlcXVlc3QqIHJl
cXVlc3QgPSBuZXcgUmVxdWVzdChkb2NMb2FkZXIsIHJlc291cmNlLCBpbmNyZW1lbnRhbCwgc2tp
cENhbkxvYWRDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CisgICAgUmVxdWVzdCog
cmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGRvY0xvYWRlciwgcmVzb3VyY2UsIGluY3JlbWVudGFsLCBz
ZWN1cml0eUNoZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKTsKIAogICAgIFJlZlB0cjxI
b3N0PiBob3N0OwogICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgcmVzb3VyY2UtPnVybCgp
KTsKQEAgLTM0Nyw3ICszNDcsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGRvY0xvYWRl
ci0+ZG9jKCktPmZyYW1lKCksCi0gICAgICAgICAgICB0aGlzLCByZXNvdXJjZVJlcXVlc3QsIHJl
cXVlc3QtPnNob3VsZFNraXBDYW5Mb2FkQ2hlY2soKSwgcmVxdWVzdC0+c2VuZFJlc291cmNlTG9h
ZENhbGxiYWNrcygpKTsKKyAgICAgICAgICAgIHRoaXMsIHJlc291cmNlUmVxdWVzdCwgcmVxdWVz
dC0+c2hvdWxkRG9TZWN1cml0eUNoZWNrKCksIHJlcXVlc3QtPnNlbmRSZXNvdXJjZUxvYWRDYWxs
YmFja3MoKSk7CiAgICAgICAgIGlmIChsb2FkZXIpIHsKICAgICAgICAgICAgIG1fcmVxdWVzdHNM
b2FkaW5nLmFkZChsb2FkZXIucmVsZWFzZSgpLCByZXF1ZXN0KTsKICAgICAgICAgICAgIHJlcXVl
c3QtPmNhY2hlZFJlc291cmNlKCktPnNldFJlcXVlc3RlZEZyb21OZXR3b3JraW5nTGF5ZXIoKTsK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2
aXNpb24gNTIxNTgpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw4ICs3MCw3IEBACiAgICAgQVNTRVJUKGNsaWVudCk7
CiAKICAgICBpZiAobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCBtX29wdGlvbnMuY3Jvc3NPcmlnaW5S
ZXF1ZXN0UG9saWN5ID09IEFsbG93Q3Jvc3NPcmlnaW5SZXF1ZXN0cykgewotICAgICAgICBib29s
IHNraXBDYW5Mb2FkQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgbG9hZFJlcXVlc3QocmVxdWVzdCwg
c2tpcENhbkxvYWRDaGVjayk7CisgICAgICAgIGxvYWRSZXF1ZXN0KHJlcXVlc3QsIERvU2VjdXJp
dHlDaGVjayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMSw4ICsxMTAsNyBAQAog
ICAgIGNyb3NzT3JpZ2luUmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXMobV9vcHRpb25zLmFsbG93Q3Jl
ZGVudGlhbHMpOwogICAgIGNyb3NzT3JpZ2luUmVxdWVzdC5zZXRIVFRQT3JpZ2luKG1fZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOwogCi0gICAgYm9vbCBza2lwQ2FuTG9h
ZENoZWNrID0gZmFsc2U7Ci0gICAgbG9hZFJlcXVlc3QoY3Jvc3NPcmlnaW5SZXF1ZXN0LCBza2lw
Q2FuTG9hZENoZWNrKTsKKyAgICBsb2FkUmVxdWVzdChjcm9zc09yaWdpblJlcXVlc3QsIERvU2Vj
dXJpdHlDaGVjayk7CiB9CiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jv
c3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCkBAIC0xNDIsOCArMTQwLDcgQEAKICAgICAgICAgcHJlZmxpZ2h0UmVxdWVzdC5z
ZXRIVFRQSGVhZGVyRmllbGQoIkFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyIsIFN0cmlu
Zzo6YWRvcHQoaGVhZGVyQnVmZmVyKSk7CiAgICAgfQogCi0gICAgYm9vbCBza2lwQ2FuTG9hZENo
ZWNrID0gZmFsc2U7Ci0gICAgbG9hZFJlcXVlc3QocHJlZmxpZ2h0UmVxdWVzdCwgc2tpcENhbkxv
YWRDaGVjayk7CisgICAgbG9hZFJlcXVlc3QocHJlZmxpZ2h0UmVxdWVzdCwgRG9TZWN1cml0eUNo
ZWNrKTsKIH0KIAogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjp+RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyKCkKQEAgLTI4NCw4ICsyODEsOCBAQAogICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+
IGFjdHVhbFJlcXVlc3Q7CiAgICAgYWN0dWFsUmVxdWVzdC5zd2FwKG1fYWN0dWFsUmVxdWVzdCk7
CiAKLSAgICBib29sIHNraXBDYW5Mb2FkQ2hlY2sgPSB0cnVlOyAgLy8gb2sgdG8gc2tpcCBsb2Fk
IGNoZWNrIHNpbmNlIHdlIGFscmVhZHkgYXNrZWQgYWJvdXQgdGhlIHByZWZsaWdodCByZXF1ZXN0
Ci0gICAgbG9hZFJlcXVlc3QoKmFjdHVhbFJlcXVlc3QsIHNraXBDYW5Mb2FkQ2hlY2spOworICAg
IC8vIEl0IHNob3VsZCBiZSBvayB0byBza2lwIHRoZSBzZWN1cml0eSBjaGVjayBzaW5jZSB3ZSBh
bHJlYWR5IGFza2VkIGFib3V0IHRoZSBwcmVmbGlnaHQgcmVxdWVzdC4KKyAgICBsb2FkUmVxdWVz
dCgqYWN0dWFsUmVxdWVzdCwgU2tpcFNlY3VyaXR5Q2hlY2spOwogfQogCiB2b2lkIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSgpCkBAIC0yOTMsNyArMjkwLDcgQEAK
ICAgICBtX2NsaWVudC0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKCkpOwogfQogCi12b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBib29sIHNraXBDYW5Mb2FkQ2hlY2spCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cml0
eUNoZWNrIHNlY3VyaXR5Q2hlY2spCiB7CiAgICAgaWYgKG1fYXN5bmMpIHsKICAgICAgICAgLy8g
RG9uJ3Qgc25pZmYgY29udGVudCBvciBzZW5kIGxvYWQgY2FsbGJhY2tzIGZvciB0aGUgcHJlZmxp
Z2h0IHJlcXVlc3QuCkBAIC0zMDIsNyArMjk5LDcgQEAKIAogICAgICAgICAvLyBDbGVhciB0aGUg
bG9hZGVyIHNvIHRoYXQgYW55IGNhbGxiYWNrcyBmcm9tIFN1YnJlc291cmNlTG9hZGVyOjpjcmVh
dGUgd2lsbCBub3QgaGF2ZSB0aGUgb2xkIGxvYWRlci4KICAgICAgICAgbV9sb2FkZXIgPSAwOwot
ICAgICAgICBtX2xvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9kb2N1bWVudC0+
ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgc2tpcENhbkxvYWRDaGVjaywgc2VuZExvYWRDYWxsYmFj
a3MsIHNuaWZmQ29udGVudCk7CisgICAgICAgIG1fbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZShtX2RvY3VtZW50LT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBzZWN1cml0eUNoZWNr
LCBzZW5kTG9hZENhbGxiYWNrcywgc25pZmZDb250ZW50KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuY3BwCShyZXZpc2lvbiA1MjE1OCkKKysrIFdlYkNvcmUv
bG9hZGVyL1JlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZXF1ZXN0OjpSZXF1ZXN0KERvY0xvYWRlciogZG9jTG9h
ZGVyLCBDYWNoZWRSZXNvdXJjZSogb2JqZWN0LCBib29sIGluY3JlbWVudGFsLCBib29sIHNob3Vs
ZFNraXBDYW5Mb2FkQ2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcykKK1JlcXVl
c3Q6OlJlcXVlc3QoRG9jTG9hZGVyKiBkb2NMb2FkZXIsIENhY2hlZFJlc291cmNlKiBvYmplY3Qs
IGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hlY2sgc2hvdWxkRG9TZWN1cml0eUNoZWNrLCBi
b29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpCiAgICAgOiBtX29iamVjdChvYmplY3QpCiAg
ICAgLCBtX2RvY0xvYWRlcihkb2NMb2FkZXIpCiAgICAgLCBtX2luY3JlbWVudGFsKGluY3JlbWVu
dGFsKQogICAgICwgbV9tdWx0aXBhcnQoZmFsc2UpCi0gICAgLCBtX3Nob3VsZFNraXBDYW5Mb2Fk
Q2hlY2soc2hvdWxkU2tpcENhbkxvYWRDaGVjaykKKyAgICAsIG1fc2hvdWxkRG9TZWN1cml0eUNo
ZWNrKHNob3VsZERvU2VjdXJpdHlDaGVjaykKICAgICAsIG1fc2VuZFJlc291cmNlTG9hZENhbGxi
YWNrcyhzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKQogewogICAgIG1fb2JqZWN0LT5zZXRSZXF1
ZXN0KHRoaXMpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiA1
MjE1OCkKKysrIFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDggQEAKIAogI2lmbmRlZiBTdWJyZXNvdXJjZUxvYWRlcl9oCiAjZGVm
aW5lIFN1YnJlc291cmNlTG9hZGVyX2gKLSAKKworI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgogIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMzgsNyArMzksNyBAQAogICAgIAogICAgIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyIDogcHVi
bGljIFJlc291cmNlTG9hZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNs
aWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgc2tpcENhbkxvYWRDaGVjayA9IGZh
bHNlLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlLCBib29sIHNob3VsZENv
bnRlbnRTbmlmZiA9IHRydWUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eUNoZWNrID0gRG9TZWN1cml0eUNoZWNrLCBib29sIHNl
bmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiA9
IHRydWUpOwogCiAgICAgICAgIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQog
Cg==
</data>
<flag name="review"
          id="26819"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44909</attachid>
            <date>2009-12-15 14:06:43 -0800</date>
            <delta_ts>2009-12-15 14:39:45 -0800</delta_ts>
            <desc>patch3 - reordered SecurityCheck enum</desc>
            <filename>patch3.txt</filename>
            <type>text/plain</type>
            <size>15733</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjE1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMTItMTUgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBSZW5h
bWUgc2tpcENhbkxvYWRDaGVjayB0byBza2lwU2VjdXJpdHlDaGVjayBpbiBhIGJ1bmNoIG9mIHBs
YWNlcyBpbiBXZWJDb3JlL2xvYWRlci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MjkKKworICAgICAgICAqIGxvYWRlci9DYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBsb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VTaW1w
bGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdo
dFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjopOgorICAgICAgICAqIGxvYWRlci9SZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
cXVlc3Q6OlJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9SZXF1ZXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXF1ZXN0OjpzaG91bGREb1NlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIGxvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3Rz
KToKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmg6CisKIDIwMDktMTItMTUgIFpvbHRhbiBIb3J2
YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCShyZXZpc2lvbiA1MjE1OCkKKysr
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAy
LDYgKzEwMiwxMSBAQAogICAgICAgICBTYW5kYm94U2NyaXB0cyA9IDEgPDwgNCwKICAgICAgICAg
U2FuZGJveEFsbCA9IC0xIC8vIE1hc2sgd2l0aCBhbGwgYml0cyBzZXQgdG8gMS4KICAgICB9Owor
ICAgIAorICAgIGVudW0gU2VjdXJpdHlDaGVjayB7CisgICAgICAgIFNraXBTZWN1cml0eUNoZWNr
LAorICAgICAgICBEb1NlY3VyaXR5Q2hlY2sKKyAgICB9OwogCiAgICAgdHlwZWRlZiBpbnQgU2Fu
ZGJveEZsYWdzOwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgJKHJldmlzaW9uIDUyMTU4KQorKysgV2ViQ29yZS9s
b2FkZXIvbG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1
ZGUgIkF0b21pY1N0cmluZy5oIgogI2luY2x1ZGUgIkF0b21pY1N0cmluZ0ltcGwuaCIKKyNpbmNs
dWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNp
bmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBA
IC00Myw3ICs0NCw3IEBACiAgICAgICAgIExvYWRlcigpOwogICAgICAgICB+TG9hZGVyKCk7CiAK
LSAgICAgICAgdm9pZCBsb2FkKERvY0xvYWRlciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNy
ZW1lbnRhbCA9IHRydWUsIGJvb2wgc2tpcENhbkxvYWRDaGVjayA9IGZhbHNlLCBib29sIHNlbmRS
ZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlKTsKKyAgICAgICAgdm9pZCBsb2FkKERvY0xvYWRl
ciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNyZW1lbnRhbCA9IHRydWUsIFNlY3VyaXR5Q2hl
Y2sgPSBEb1NlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyA9IHRy
dWUpOwogCiAgICAgICAgIHZvaWQgY2FuY2VsUmVxdWVzdHMoRG9jTG9hZGVyKik7CiAgICAgICAg
IApJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA1MjE1OCkKKysrIFdlYkNv
cmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcg
QEAKICNkZWZpbmUgQ2FjaGVkUmVzb3VyY2VfaAogCiAjaW5jbHVkZSAiQ2FjaGVQb2xpY3kuaCIK
KyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCkBAIC03NSw4ICs3Niw4IEBACiAgICAgQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1
cmwsIFR5cGUpOwogICAgIHZpcnR1YWwgfkNhY2hlZFJlc291cmNlKCk7CiAgICAgCi0gICAgdmly
dHVhbCB2b2lkIGxvYWQoRG9jTG9hZGVyKiBkb2NMb2FkZXIpICB7IGxvYWQoZG9jTG9hZGVyLCBm
YWxzZSwgZmFsc2UsIHRydWUpOyB9Ci0gICAgdm9pZCBsb2FkKERvY0xvYWRlciosIGJvb2wgaW5j
cmVtZW50YWwsIGJvb2wgc2tpcENhbkxvYWRDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2Fs
bGJhY2tzKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChEb2NMb2FkZXIqIGRvY0xvYWRlcikgIHsg
bG9hZChkb2NMb2FkZXIsIGZhbHNlLCBEb1NlY3VyaXR5Q2hlY2ssIHRydWUpOyB9CisgICAgdm9p
ZCBsb2FkKERvY0xvYWRlciosIGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hlY2ssIGJvb2wg
c2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25z
dCB7IHJldHVybiBTdHJpbmcoKTsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvUmVxdWVzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuaAkocmV2aXNpb24gNTIxNTgpCisr
KyBXZWJDb3JlL2xvYWRlci9SZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcg
QEAKICNpZm5kZWYgUmVxdWVzdF9oCiAjZGVmaW5lIFJlcXVlc3RfaAogCisjaW5jbHVkZSAiRnJh
bWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzIsNyArMzMsNyBAQAogCiAgICAgY2xhc3MgUmVxdWVzdCA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBSZXF1ZXN0KERvY0xvYWRlciosIENh
Y2hlZFJlc291cmNlKiwgYm9vbCBpbmNyZW1lbnRhbCwgYm9vbCBza2lwQ2FuTG9hZENoZWNrLCBi
b29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpOworICAgICAgICBSZXF1ZXN0KERvY0xvYWRl
ciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNyZW1lbnRhbCwgU2VjdXJpdHlDaGVjaywgYm9v
bCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKTsKICAgICAgICAgflJlcXVlc3QoKTsKICAgICAg
ICAgCiAgICAgICAgIFZlY3RvcjxjaGFyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0K
QEAgLTQ1LDcgKzQ2LDcgQEAKICAgICAgICAgYm9vbCBpc011bHRpcGFydCgpIHsgcmV0dXJuIG1f
bXVsdGlwYXJ0OyB9CiAgICAgICAgIHZvaWQgc2V0SXNNdWx0aXBhcnQoYm9vbCBiID0gdHJ1ZSkg
eyBtX211bHRpcGFydCA9IGI7IH0KIAotICAgICAgICBib29sIHNob3VsZFNraXBDYW5Mb2FkQ2hl
Y2soKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFNraXBDYW5Mb2FkQ2hlY2s7IH0KKyAgICAgICAg
U2VjdXJpdHlDaGVjayBzaG91bGREb1NlY3VyaXR5Q2hlY2soKSBjb25zdCB7IHJldHVybiBtX3No
b3VsZERvU2VjdXJpdHlDaGVjazsgfQogICAgICAgICBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxs
YmFja3MoKSBjb25zdCB7IHJldHVybiBtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3M7IH0KICAg
ICAgICAgCiAgICAgcHJpdmF0ZToKQEAgLTU0LDcgKzU1LDcgQEAKICAgICAgICAgRG9jTG9hZGVy
KiBtX2RvY0xvYWRlcjsKICAgICAgICAgYm9vbCBtX2luY3JlbWVudGFsOwogICAgICAgICBib29s
IG1fbXVsdGlwYXJ0OwotICAgICAgICBib29sIG1fc2hvdWxkU2tpcENhbkxvYWRDaGVjazsKKyAg
ICAgICAgU2VjdXJpdHlDaGVjayBtX3Nob3VsZERvU2VjdXJpdHlDaGVjazsKICAgICAgICAgYm9v
bCBtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3M7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9s
b2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hl
ZEltYWdlLmNwcAkocmV2aXNpb24gNTIxNTgpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIlJlcXVlc3QuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAt
ODEsNyArODIsNyBAQAogdm9pZCBDYWNoZWRJbWFnZTo6bG9hZChEb2NMb2FkZXIqIGRvY0xvYWRl
cikKIHsKICAgICBpZiAoIWRvY0xvYWRlciB8fCBkb2NMb2FkZXItPmF1dG9Mb2FkSW1hZ2VzKCkp
Ci0gICAgICAgIENhY2hlZFJlc291cmNlOjpsb2FkKGRvY0xvYWRlciwgdHJ1ZSwgZmFsc2UsIHRy
dWUpOworICAgICAgICBDYWNoZWRSZXNvdXJjZTo6bG9hZChkb2NMb2FkZXIsIHRydWUsIERvU2Vj
dXJpdHlDaGVjaywgdHJ1ZSk7CiAgICAgZWxzZQogICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsK
IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDUyMTU4KQorKysg
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMs
MTAgKzEwMywxMCBAQAogICAgICAgICBtX2RvY0xvYWRlci0+cmVtb3ZlQ2FjaGVkUmVzb3VyY2Uo
dGhpcyk7CiB9CiAgICAgCi12b2lkIENhY2hlZFJlc291cmNlOjpsb2FkKERvY0xvYWRlciogZG9j
TG9hZGVyLCBib29sIGluY3JlbWVudGFsLCBib29sIHNraXBDYW5Mb2FkQ2hlY2ssIGJvb2wgc2Vu
ZFJlc291cmNlTG9hZENhbGxiYWNrcykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoRG9jTG9h
ZGVyKiBkb2NMb2FkZXIsIGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hlY2sgc2VjdXJpdHlD
aGVjaywgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKQogewogICAgIG1fc2VuZFJlc291
cmNlTG9hZENhbGxiYWNrcyA9IHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3M7Ci0gICAgY2FjaGUo
KS0+bG9hZGVyKCktPmxvYWQoZG9jTG9hZGVyLCB0aGlzLCBpbmNyZW1lbnRhbCwgc2tpcENhbkxv
YWRDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CisgICAgY2FjaGUoKS0+bG9hZGVy
KCktPmxvYWQoZG9jTG9hZGVyLCB0aGlzLCBpbmNyZW1lbnRhbCwgc2VjdXJpdHlDaGVjaywgc2Vu
ZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CiAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKIH0KIApJbmRl
eDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDUy
MTU4KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyX2gKICNkZWZpbmUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyX2gKIAorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBA
IC04NSw3ICs4Niw3IEBACiAgICAgICAgIHZvaWQgcHJlZmxpZ2h0U3VjY2VzcygpOwogICAgICAg
ICB2b2lkIHByZWZsaWdodEZhaWx1cmUoKTsKIAotICAgICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgc2tpcENhbkxvYWRDaGVjayk7CisgICAgICAgIHZv
aWQgbG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlDaGVjayk7CiAg
ICAgICAgIGJvb2wgaXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgS1VSTCYpOwogCiAgICAgICAgIFJl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA1MjE1OCkKKysrIFdlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTggKzYxLDE4IEBACiAjZW5k
aWYKIH0KIAotUGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZShGcmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBza2lwQ2FuTG9hZENoZWNrLCBib29s
IHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQorUGFz
c1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFt
ZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlDaGVjayBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRS
ZXNvdXJjZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQogewogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgRnJhbWVMb2FkZXIqIGZsID0gZnJh
bWUtPmxvYWRlcigpOwotICAgIGlmICghc2tpcENhbkxvYWRDaGVjayAmJiAoZmwtPnN0YXRlKCkg
PT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsIHx8IGZsLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5p
c1N0b3BwaW5nKCkpKQorICAgIGlmIChzZWN1cml0eUNoZWNrID09IERvU2VjdXJpdHlDaGVjayAm
JiAoZmwtPnN0YXRlKCkgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsIHx8IGZsLT5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT5pc1N0b3BwaW5nKCkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJl
c291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gcmVxdWVzdDsKIAotICAgIGlmICghc2tpcENhbkxv
YWRDaGVjaworICAgIGlmIChzZWN1cml0eUNoZWNrID09IERvU2VjdXJpdHlDaGVjawogICAgICAg
ICAgICAgJiYgU2VjdXJpdHlPcmlnaW46OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpCiAgICAgICAg
ICAgICAmJiAhU2VjdXJpdHlPcmlnaW46OmNhbkxvYWQocmVxdWVzdC51cmwoKSwgU3RyaW5nKCks
IGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxM
b2FkRmFpbGVkKGZyYW1lLCByZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJ
KHJldmlzaW9uIDUyMTU4KQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbWFnZS5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC0xNjQsNyArMTY1LDcgQEAKICAgICAgICAg
Ly8gRklYTUU6IENhY2hlZFJlc291cmNlIHNob3VsZCBqdXN0IHVzZSBub3JtYWwgcmVmY291bnRp
bmcgaW5zdGVhZC4KICAgICAgICAgdXNlclNoZWV0LT5zZXRJbkNhY2hlKHRydWUpOwogICAgICAg
ICAvLyBEb24ndCBsb2FkIGluY3JlbWVudGFsbHksIHNraXAgbG9hZCBjaGVja3MsIGRvbid0IHNl
bmQgcmVzb3VyY2UgbG9hZCBjYWxsYmFja3MuCi0gICAgICAgIHVzZXJTaGVldC0+bG9hZChkb2NM
b2FkZXIsIGZhbHNlLCB0cnVlLCBmYWxzZSk7CisgICAgICAgIHVzZXJTaGVldC0+bG9hZChkb2NM
b2FkZXIsIGZhbHNlLCBTa2lwU2VjdXJpdHlDaGVjaywgZmFsc2UpOwogICAgICAgICBpZiAoIWRp
c2FibGVkKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlcy5zZXQodXJsLCB1c2VyU2hlZXQpOwog
ICAgICAgICBlbHNlCkluZGV4OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAJKHJldmlzaW9uIDUyMTU4KQorKysgV2ViQ29y
ZS9sb2FkZXIvbG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDEwICsxMTcsMTAgQEAK
ICNlbmRpZgogfQogCi12b2lkIExvYWRlcjo6bG9hZChEb2NMb2FkZXIqIGRvY0xvYWRlciwgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBib29sIGluY3JlbWVudGFsLCBib29sIHNraXBDYW5Mb2Fk
Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcykKK3ZvaWQgTG9hZGVyOjpsb2Fk
KERvY0xvYWRlciogZG9jTG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGJvb2wgaW5j
cmVtZW50YWwsIFNlY3VyaXR5Q2hlY2sgc2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzKQogewogICAgIEFTU0VSVChkb2NMb2FkZXIpOwotICAgIFJlcXVlc3QqIHJl
cXVlc3QgPSBuZXcgUmVxdWVzdChkb2NMb2FkZXIsIHJlc291cmNlLCBpbmNyZW1lbnRhbCwgc2tp
cENhbkxvYWRDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CisgICAgUmVxdWVzdCog
cmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGRvY0xvYWRlciwgcmVzb3VyY2UsIGluY3JlbWVudGFsLCBz
ZWN1cml0eUNoZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKTsKIAogICAgIFJlZlB0cjxI
b3N0PiBob3N0OwogICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgcmVzb3VyY2UtPnVybCgp
KTsKQEAgLTM0Nyw3ICszNDcsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGRvY0xvYWRl
ci0+ZG9jKCktPmZyYW1lKCksCi0gICAgICAgICAgICB0aGlzLCByZXNvdXJjZVJlcXVlc3QsIHJl
cXVlc3QtPnNob3VsZFNraXBDYW5Mb2FkQ2hlY2soKSwgcmVxdWVzdC0+c2VuZFJlc291cmNlTG9h
ZENhbGxiYWNrcygpKTsKKyAgICAgICAgICAgIHRoaXMsIHJlc291cmNlUmVxdWVzdCwgcmVxdWVz
dC0+c2hvdWxkRG9TZWN1cml0eUNoZWNrKCksIHJlcXVlc3QtPnNlbmRSZXNvdXJjZUxvYWRDYWxs
YmFja3MoKSk7CiAgICAgICAgIGlmIChsb2FkZXIpIHsKICAgICAgICAgICAgIG1fcmVxdWVzdHNM
b2FkaW5nLmFkZChsb2FkZXIucmVsZWFzZSgpLCByZXF1ZXN0KTsKICAgICAgICAgICAgIHJlcXVl
c3QtPmNhY2hlZFJlc291cmNlKCktPnNldFJlcXVlc3RlZEZyb21OZXR3b3JraW5nTGF5ZXIoKTsK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2
aXNpb24gNTIxNTgpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw4ICs3MCw3IEBACiAgICAgQVNTRVJUKGNsaWVudCk7
CiAKICAgICBpZiAobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCBtX29wdGlvbnMuY3Jvc3NPcmlnaW5S
ZXF1ZXN0UG9saWN5ID09IEFsbG93Q3Jvc3NPcmlnaW5SZXF1ZXN0cykgewotICAgICAgICBib29s
IHNraXBDYW5Mb2FkQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgbG9hZFJlcXVlc3QocmVxdWVzdCwg
c2tpcENhbkxvYWRDaGVjayk7CisgICAgICAgIGxvYWRSZXF1ZXN0KHJlcXVlc3QsIERvU2VjdXJp
dHlDaGVjayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMSw4ICsxMTAsNyBAQAog
ICAgIGNyb3NzT3JpZ2luUmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXMobV9vcHRpb25zLmFsbG93Q3Jl
ZGVudGlhbHMpOwogICAgIGNyb3NzT3JpZ2luUmVxdWVzdC5zZXRIVFRQT3JpZ2luKG1fZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOwogCi0gICAgYm9vbCBza2lwQ2FuTG9h
ZENoZWNrID0gZmFsc2U7Ci0gICAgbG9hZFJlcXVlc3QoY3Jvc3NPcmlnaW5SZXF1ZXN0LCBza2lw
Q2FuTG9hZENoZWNrKTsKKyAgICBsb2FkUmVxdWVzdChjcm9zc09yaWdpblJlcXVlc3QsIERvU2Vj
dXJpdHlDaGVjayk7CiB9CiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jv
c3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCkBAIC0xNDIsOCArMTQwLDcgQEAKICAgICAgICAgcHJlZmxpZ2h0UmVxdWVzdC5z
ZXRIVFRQSGVhZGVyRmllbGQoIkFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyIsIFN0cmlu
Zzo6YWRvcHQoaGVhZGVyQnVmZmVyKSk7CiAgICAgfQogCi0gICAgYm9vbCBza2lwQ2FuTG9hZENo
ZWNrID0gZmFsc2U7Ci0gICAgbG9hZFJlcXVlc3QocHJlZmxpZ2h0UmVxdWVzdCwgc2tpcENhbkxv
YWRDaGVjayk7CisgICAgbG9hZFJlcXVlc3QocHJlZmxpZ2h0UmVxdWVzdCwgRG9TZWN1cml0eUNo
ZWNrKTsKIH0KIAogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjp+RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyKCkKQEAgLTI4NCw4ICsyODEsOCBAQAogICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+
IGFjdHVhbFJlcXVlc3Q7CiAgICAgYWN0dWFsUmVxdWVzdC5zd2FwKG1fYWN0dWFsUmVxdWVzdCk7
CiAKLSAgICBib29sIHNraXBDYW5Mb2FkQ2hlY2sgPSB0cnVlOyAgLy8gb2sgdG8gc2tpcCBsb2Fk
IGNoZWNrIHNpbmNlIHdlIGFscmVhZHkgYXNrZWQgYWJvdXQgdGhlIHByZWZsaWdodCByZXF1ZXN0
Ci0gICAgbG9hZFJlcXVlc3QoKmFjdHVhbFJlcXVlc3QsIHNraXBDYW5Mb2FkQ2hlY2spOworICAg
IC8vIEl0IHNob3VsZCBiZSBvayB0byBza2lwIHRoZSBzZWN1cml0eSBjaGVjayBzaW5jZSB3ZSBh
bHJlYWR5IGFza2VkIGFib3V0IHRoZSBwcmVmbGlnaHQgcmVxdWVzdC4KKyAgICBsb2FkUmVxdWVz
dCgqYWN0dWFsUmVxdWVzdCwgU2tpcFNlY3VyaXR5Q2hlY2spOwogfQogCiB2b2lkIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSgpCkBAIC0yOTMsNyArMjkwLDcgQEAK
ICAgICBtX2NsaWVudC0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKCkpOwogfQogCi12b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBib29sIHNraXBDYW5Mb2FkQ2hlY2spCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cml0
eUNoZWNrIHNlY3VyaXR5Q2hlY2spCiB7CiAgICAgaWYgKG1fYXN5bmMpIHsKICAgICAgICAgLy8g
RG9uJ3Qgc25pZmYgY29udGVudCBvciBzZW5kIGxvYWQgY2FsbGJhY2tzIGZvciB0aGUgcHJlZmxp
Z2h0IHJlcXVlc3QuCkBAIC0zMDIsNyArMjk5LDcgQEAKIAogICAgICAgICAvLyBDbGVhciB0aGUg
bG9hZGVyIHNvIHRoYXQgYW55IGNhbGxiYWNrcyBmcm9tIFN1YnJlc291cmNlTG9hZGVyOjpjcmVh
dGUgd2lsbCBub3QgaGF2ZSB0aGUgb2xkIGxvYWRlci4KICAgICAgICAgbV9sb2FkZXIgPSAwOwot
ICAgICAgICBtX2xvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9kb2N1bWVudC0+
ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgc2tpcENhbkxvYWRDaGVjaywgc2VuZExvYWRDYWxsYmFj
a3MsIHNuaWZmQ29udGVudCk7CisgICAgICAgIG1fbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZShtX2RvY3VtZW50LT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBzZWN1cml0eUNoZWNr
LCBzZW5kTG9hZENhbGxiYWNrcywgc25pZmZDb250ZW50KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuY3BwCShyZXZpc2lvbiA1MjE1OCkKKysrIFdlYkNvcmUv
bG9hZGVyL1JlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZXF1ZXN0OjpSZXF1ZXN0KERvY0xvYWRlciogZG9jTG9h
ZGVyLCBDYWNoZWRSZXNvdXJjZSogb2JqZWN0LCBib29sIGluY3JlbWVudGFsLCBib29sIHNob3Vs
ZFNraXBDYW5Mb2FkQ2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcykKK1JlcXVl
c3Q6OlJlcXVlc3QoRG9jTG9hZGVyKiBkb2NMb2FkZXIsIENhY2hlZFJlc291cmNlKiBvYmplY3Qs
IGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hlY2sgc2hvdWxkRG9TZWN1cml0eUNoZWNrLCBi
b29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpCiAgICAgOiBtX29iamVjdChvYmplY3QpCiAg
ICAgLCBtX2RvY0xvYWRlcihkb2NMb2FkZXIpCiAgICAgLCBtX2luY3JlbWVudGFsKGluY3JlbWVu
dGFsKQogICAgICwgbV9tdWx0aXBhcnQoZmFsc2UpCi0gICAgLCBtX3Nob3VsZFNraXBDYW5Mb2Fk
Q2hlY2soc2hvdWxkU2tpcENhbkxvYWRDaGVjaykKKyAgICAsIG1fc2hvdWxkRG9TZWN1cml0eUNo
ZWNrKHNob3VsZERvU2VjdXJpdHlDaGVjaykKICAgICAsIG1fc2VuZFJlc291cmNlTG9hZENhbGxi
YWNrcyhzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKQogewogICAgIG1fb2JqZWN0LT5zZXRSZXF1
ZXN0KHRoaXMpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiA1
MjE1OCkKKysrIFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDggQEAKIAogI2lmbmRlZiBTdWJyZXNvdXJjZUxvYWRlcl9oCiAjZGVm
aW5lIFN1YnJlc291cmNlTG9hZGVyX2gKLSAKKworI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgogIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMzgsNyArMzksNyBAQAogICAgIAogICAgIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyIDogcHVi
bGljIFJlc291cmNlTG9hZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNs
aWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgc2tpcENhbkxvYWRDaGVjayA9IGZh
bHNlLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlLCBib29sIHNob3VsZENv
bnRlbnRTbmlmZiA9IHRydWUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eUNoZWNrID0gRG9TZWN1cml0eUNoZWNrLCBib29sIHNl
bmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiA9
IHRydWUpOwogCiAgICAgICAgIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQog
Cg==
</data>
<flag name="review"
          id="26840"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44912</attachid>
            <date>2009-12-15 14:39:45 -0800</date>
            <delta_ts>2009-12-15 14:40:42 -0800</delta_ts>
            <desc>patch4 - renamed to SecurityCheckPolicy</desc>
            <filename>patch4.txt</filename>
            <type>text/plain</type>
            <size>15811</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjE1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMTItMTUgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBSZW5h
bWUgc2tpcENhbkxvYWRDaGVjayB0byBza2lwU2VjdXJpdHlDaGVjayBpbiBhIGJ1bmNoIG9mIHBs
YWNlcyBpbiBXZWJDb3JlL2xvYWRlci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzI1MjkKKworICAgICAgICAqIGxvYWRlci9DYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBsb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZCk6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VTaW1w
bGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdo
dFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjopOgorICAgICAgICAqIGxvYWRlci9SZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
cXVlc3Q6OlJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9SZXF1ZXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXF1ZXN0OjpzaG91bGREb1NlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIGxvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6bG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6Okhvc3Q6OnNlcnZlUGVuZGluZ1JlcXVlc3Rz
KToKKyAgICAgICAgKiBsb2FkZXIvbG9hZGVyLmg6CisKIDIwMDktMTItMTUgIFpvbHRhbiBIb3J2
YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCShyZXZpc2lvbiA1MjE1OCkKKysr
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAy
LDYgKzEwMiwxMSBAQAogICAgICAgICBTYW5kYm94U2NyaXB0cyA9IDEgPDwgNCwKICAgICAgICAg
U2FuZGJveEFsbCA9IC0xIC8vIE1hc2sgd2l0aCBhbGwgYml0cyBzZXQgdG8gMS4KICAgICB9Owor
ICAgIAorICAgIGVudW0gU2VjdXJpdHlDaGVja1BvbGljeSB7CisgICAgICAgIFNraXBTZWN1cml0
eUNoZWNrLAorICAgICAgICBEb1NlY3VyaXR5Q2hlY2sKKyAgICB9OwogCiAgICAgdHlwZWRlZiBp
bnQgU2FuZGJveEZsYWdzOwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgJKHJldmlzaW9uIDUyMTU4KQorKysgV2Vi
Q29yZS9sb2FkZXIvbG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAog
I2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogI2luY2x1ZGUgIkF0b21pY1N0cmluZ0ltcGwuaCIK
KyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCkBAIC00Myw3ICs0NCw3IEBACiAgICAgICAgIExvYWRlcigpOwogICAgICAgICB+TG9hZGVy
KCk7CiAKLSAgICAgICAgdm9pZCBsb2FkKERvY0xvYWRlciosIENhY2hlZFJlc291cmNlKiwgYm9v
bCBpbmNyZW1lbnRhbCA9IHRydWUsIGJvb2wgc2tpcENhbkxvYWRDaGVjayA9IGZhbHNlLCBib29s
IHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlKTsKKyAgICAgICAgdm9pZCBsb2FkKERv
Y0xvYWRlciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNyZW1lbnRhbCA9IHRydWUsIFNlY3Vy
aXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5Q2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENh
bGxiYWNrcyA9IHRydWUpOwogCiAgICAgICAgIHZvaWQgY2FuY2VsUmVxdWVzdHMoRG9jTG9hZGVy
Kik7CiAgICAgICAgIApJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiA1MjE1
OCkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgQ2FjaGVkUmVzb3VyY2VfaAogCiAjaW5jbHVkZSAiQ2Fj
aGVQb2xpY3kuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCkBAIC03NSw4ICs3Niw4IEBACiAgICAgQ2FjaGVkUmVzb3VyY2UoY29u
c3QgU3RyaW5nJiB1cmwsIFR5cGUpOwogICAgIHZpcnR1YWwgfkNhY2hlZFJlc291cmNlKCk7CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIGxvYWQoRG9jTG9hZGVyKiBkb2NMb2FkZXIpICB7IGxvYWQo
ZG9jTG9hZGVyLCBmYWxzZSwgZmFsc2UsIHRydWUpOyB9Ci0gICAgdm9pZCBsb2FkKERvY0xvYWRl
ciosIGJvb2wgaW5jcmVtZW50YWwsIGJvb2wgc2tpcENhbkxvYWRDaGVjaywgYm9vbCBzZW5kUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChEb2NMb2FkZXIqIGRv
Y0xvYWRlcikgIHsgbG9hZChkb2NMb2FkZXIsIGZhbHNlLCBEb1NlY3VyaXR5Q2hlY2ssIHRydWUp
OyB9CisgICAgdm9pZCBsb2FkKERvY0xvYWRlciosIGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5
Q2hlY2tQb2xpY3ksIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJp
bmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQpJbmRleDogV2ViQ29yZS9s
b2FkZXIvUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuaAko
cmV2aXNpb24gNTIxNTgpCisrKyBXZWJDb3JlL2xvYWRlci9SZXF1ZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgUmVxdWVzdF9oCiAjZGVmaW5lIFJlcXVlc3Rf
aAogCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzIsNyArMzMsNyBAQAogCiAgICAgY2xhc3Mg
UmVxdWVzdCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBSZXF1
ZXN0KERvY0xvYWRlciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNyZW1lbnRhbCwgYm9vbCBz
a2lwQ2FuTG9hZENoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpOworICAgICAg
ICBSZXF1ZXN0KERvY0xvYWRlciosIENhY2hlZFJlc291cmNlKiwgYm9vbCBpbmNyZW1lbnRhbCwg
U2VjdXJpdHlDaGVja1BvbGljeSwgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKTsKICAg
ICAgICAgflJlcXVlc3QoKTsKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxjaGFyPiYgYnVmZmVy
KCkgeyByZXR1cm4gbV9idWZmZXI7IH0KQEAgLTQ1LDcgKzQ2LDcgQEAKICAgICAgICAgYm9vbCBp
c011bHRpcGFydCgpIHsgcmV0dXJuIG1fbXVsdGlwYXJ0OyB9CiAgICAgICAgIHZvaWQgc2V0SXNN
dWx0aXBhcnQoYm9vbCBiID0gdHJ1ZSkgeyBtX211bHRpcGFydCA9IGI7IH0KIAotICAgICAgICBi
b29sIHNob3VsZFNraXBDYW5Mb2FkQ2hlY2soKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFNraXBD
YW5Mb2FkQ2hlY2s7IH0KKyAgICAgICAgU2VjdXJpdHlDaGVja1BvbGljeSBzaG91bGREb1NlY3Vy
aXR5Q2hlY2soKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZERvU2VjdXJpdHlDaGVjazsgfQogICAg
ICAgICBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX3Nl
bmRSZXNvdXJjZUxvYWRDYWxsYmFja3M7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKQEAgLTU0
LDcgKzU1LDcgQEAKICAgICAgICAgRG9jTG9hZGVyKiBtX2RvY0xvYWRlcjsKICAgICAgICAgYm9v
bCBtX2luY3JlbWVudGFsOwogICAgICAgICBib29sIG1fbXVsdGlwYXJ0OwotICAgICAgICBib29s
IG1fc2hvdWxkU2tpcENhbkxvYWRDaGVjazsKKyAgICAgICAgU2VjdXJpdHlDaGVja1BvbGljeSBt
X3Nob3VsZERvU2VjdXJpdHlDaGVjazsKICAgICAgICAgYm9vbCBtX3NlbmRSZXNvdXJjZUxvYWRD
YWxsYmFja3M7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24g
NTIxNTgpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5o
IgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
RnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlJl
cXVlc3QuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtODEsNyArODIsNyBAQAogdm9pZCBD
YWNoZWRJbWFnZTo6bG9hZChEb2NMb2FkZXIqIGRvY0xvYWRlcikKIHsKICAgICBpZiAoIWRvY0xv
YWRlciB8fCBkb2NMb2FkZXItPmF1dG9Mb2FkSW1hZ2VzKCkpCi0gICAgICAgIENhY2hlZFJlc291
cmNlOjpsb2FkKGRvY0xvYWRlciwgdHJ1ZSwgZmFsc2UsIHRydWUpOworICAgICAgICBDYWNoZWRS
ZXNvdXJjZTo6bG9hZChkb2NMb2FkZXIsIHRydWUsIERvU2VjdXJpdHlDaGVjaywgdHJ1ZSk7CiAg
ICAgZWxzZQogICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKIH0KSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNo
ZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDUyMTU4KQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
UmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTAgKzEwMywxMCBAQAogICAgICAg
ICBtX2RvY0xvYWRlci0+cmVtb3ZlQ2FjaGVkUmVzb3VyY2UodGhpcyk7CiB9CiAgICAgCi12b2lk
IENhY2hlZFJlc291cmNlOjpsb2FkKERvY0xvYWRlciogZG9jTG9hZGVyLCBib29sIGluY3JlbWVu
dGFsLCBib29sIHNraXBDYW5Mb2FkQ2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNr
cykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoRG9jTG9hZGVyKiBkb2NMb2FkZXIsIGJvb2wg
aW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaywgYm9vbCBzZW5k
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKQogewogICAgIG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNr
cyA9IHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3M7Ci0gICAgY2FjaGUoKS0+bG9hZGVyKCktPmxv
YWQoZG9jTG9hZGVyLCB0aGlzLCBpbmNyZW1lbnRhbCwgc2tpcENhbkxvYWRDaGVjaywgc2VuZFJl
c291cmNlTG9hZENhbGxiYWNrcyk7CisgICAgY2FjaGUoKS0+bG9hZGVyKCktPmxvYWQoZG9jTG9h
ZGVyLCB0aGlzLCBpbmNyZW1lbnRhbCwgc2VjdXJpdHlDaGVjaywgc2VuZFJlc291cmNlTG9hZENh
bGxiYWNrcyk7CiAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKIH0KIApJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDUyMTU4KQorKysgV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDcgQEAKICNpZm5kZWYgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyX2gKICNkZWZpbmUg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyX2gKIAorI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMu
aCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC04NSw3ICs4Niw3IEBA
CiAgICAgICAgIHZvaWQgcHJlZmxpZ2h0U3VjY2VzcygpOwogICAgICAgICB2b2lkIHByZWZsaWdo
dEZhaWx1cmUoKTsKIAotICAgICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGJvb2wgc2tpcENhbkxvYWRDaGVjayk7CisgICAgICAgIHZvaWQgbG9hZFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlDaGVja1BvbGljeSk7CiAgICAgICAgIGJv
b2wgaXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgS1VSTCYpOwogCiAgICAgICAgIFJlZlB0cjxTdWJy
ZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiA1MjE1OCkKKysrIFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTggKzYxLDE4IEBACiAjZW5kaWYKIH0KIAot
UGFzc1JlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShG
cmFtZSogZnJhbWUsIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBza2lwQ2FuTG9hZENoZWNrLCBib29sIHNlbmRSZXNv
dXJjZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQorUGFzc1JlZlB0cjxT
dWJyZXNvdXJjZUxvYWRlcj4gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUs
IFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNv
dXJjZUxvYWRDYWxsYmFja3MsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQogewogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgRnJhbWVMb2FkZXIqIGZsID0gZnJhbWUt
PmxvYWRlcigpOwotICAgIGlmICghc2tpcENhbkxvYWRDaGVjayAmJiAoZmwtPnN0YXRlKCkgPT0g
RnJhbWVTdGF0ZVByb3Zpc2lvbmFsIHx8IGZsLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5pc1N0
b3BwaW5nKCkpKQorICAgIGlmIChzZWN1cml0eUNoZWNrID09IERvU2VjdXJpdHlDaGVjayAmJiAo
ZmwtPnN0YXRlKCkgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsIHx8IGZsLT5hY3RpdmVEb2N1bWVu
dExvYWRlcigpLT5pc1N0b3BwaW5nKCkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlc291
cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gcmVxdWVzdDsKIAotICAgIGlmICghc2tpcENhbkxvYWRD
aGVjaworICAgIGlmIChzZWN1cml0eUNoZWNrID09IERvU2VjdXJpdHlDaGVjawogICAgICAgICAg
ICAgJiYgU2VjdXJpdHlPcmlnaW46OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpCiAgICAgICAgICAg
ICAmJiAhU2VjdXJpdHlPcmlnaW46OmNhbkxvYWQocmVxdWVzdC51cmwoKSwgU3RyaW5nKCksIGZy
YW1lLT5kb2N1bWVudCgpKSkgewogICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2Fk
RmFpbGVkKGZyYW1lLCByZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL0NhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHJl
dmlzaW9uIDUyMTU4KQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVy
VHlwZXMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC0xNjQsNyArMTY1LDcgQEAKICAgICAgICAgLy8g
RklYTUU6IENhY2hlZFJlc291cmNlIHNob3VsZCBqdXN0IHVzZSBub3JtYWwgcmVmY291bnRpbmcg
aW5zdGVhZC4KICAgICAgICAgdXNlclNoZWV0LT5zZXRJbkNhY2hlKHRydWUpOwogICAgICAgICAv
LyBEb24ndCBsb2FkIGluY3JlbWVudGFsbHksIHNraXAgbG9hZCBjaGVja3MsIGRvbid0IHNlbmQg
cmVzb3VyY2UgbG9hZCBjYWxsYmFja3MuCi0gICAgICAgIHVzZXJTaGVldC0+bG9hZChkb2NMb2Fk
ZXIsIGZhbHNlLCB0cnVlLCBmYWxzZSk7CisgICAgICAgIHVzZXJTaGVldC0+bG9hZChkb2NMb2Fk
ZXIsIGZhbHNlLCBTa2lwU2VjdXJpdHlDaGVjaywgZmFsc2UpOwogICAgICAgICBpZiAoIWRpc2Fi
bGVkKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlcy5zZXQodXJsLCB1c2VyU2hlZXQpOwogICAg
ICAgICBlbHNlCkluZGV4OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAJKHJldmlzaW9uIDUyMTU4KQorKysgV2ViQ29yZS9s
b2FkZXIvbG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDEwICsxMTcsMTAgQEAKICNl
bmRpZgogfQogCi12b2lkIExvYWRlcjo6bG9hZChEb2NMb2FkZXIqIGRvY0xvYWRlciwgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBib29sIGluY3JlbWVudGFsLCBib29sIHNraXBDYW5Mb2FkQ2hl
Y2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcykKK3ZvaWQgTG9hZGVyOjpsb2FkKERv
Y0xvYWRlciogZG9jTG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGJvb2wgaW5jcmVt
ZW50YWwsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaywgYm9vbCBzZW5kUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzKQogewogICAgIEFTU0VSVChkb2NMb2FkZXIpOwotICAgIFJlcXVlc3Qq
IHJlcXVlc3QgPSBuZXcgUmVxdWVzdChkb2NMb2FkZXIsIHJlc291cmNlLCBpbmNyZW1lbnRhbCwg
c2tpcENhbkxvYWRDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7CisgICAgUmVxdWVz
dCogcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGRvY0xvYWRlciwgcmVzb3VyY2UsIGluY3JlbWVudGFs
LCBzZWN1cml0eUNoZWNrLCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKTsKIAogICAgIFJlZlB0
cjxIb3N0PiBob3N0OwogICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgcmVzb3VyY2UtPnVy
bCgpKTsKQEAgLTM0Nyw3ICszNDcsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPFN1
YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGRvY0xv
YWRlci0+ZG9jKCktPmZyYW1lKCksCi0gICAgICAgICAgICB0aGlzLCByZXNvdXJjZVJlcXVlc3Qs
IHJlcXVlc3QtPnNob3VsZFNraXBDYW5Mb2FkQ2hlY2soKSwgcmVxdWVzdC0+c2VuZFJlc291cmNl
TG9hZENhbGxiYWNrcygpKTsKKyAgICAgICAgICAgIHRoaXMsIHJlc291cmNlUmVxdWVzdCwgcmVx
dWVzdC0+c2hvdWxkRG9TZWN1cml0eUNoZWNrKCksIHJlcXVlc3QtPnNlbmRSZXNvdXJjZUxvYWRD
YWxsYmFja3MoKSk7CiAgICAgICAgIGlmIChsb2FkZXIpIHsKICAgICAgICAgICAgIG1fcmVxdWVz
dHNMb2FkaW5nLmFkZChsb2FkZXIucmVsZWFzZSgpLCByZXF1ZXN0KTsKICAgICAgICAgICAgIHJl
cXVlc3QtPmNhY2hlZFJlc291cmNlKCktPnNldFJlcXVlc3RlZEZyb21OZXR3b3JraW5nTGF5ZXIo
KTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAko
cmV2aXNpb24gNTIxNTgpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw4ICs3MCw3IEBACiAgICAgQVNTRVJUKGNsaWVu
dCk7CiAKICAgICBpZiAobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCBtX29wdGlvbnMuY3Jvc3NPcmln
aW5SZXF1ZXN0UG9saWN5ID09IEFsbG93Q3Jvc3NPcmlnaW5SZXF1ZXN0cykgewotICAgICAgICBi
b29sIHNraXBDYW5Mb2FkQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgbG9hZFJlcXVlc3QocmVxdWVz
dCwgc2tpcENhbkxvYWRDaGVjayk7CisgICAgICAgIGxvYWRSZXF1ZXN0KHJlcXVlc3QsIERvU2Vj
dXJpdHlDaGVjayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMSw4ICsxMTAsNyBA
QAogICAgIGNyb3NzT3JpZ2luUmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXMobV9vcHRpb25zLmFsbG93
Q3JlZGVudGlhbHMpOwogICAgIGNyb3NzT3JpZ2luUmVxdWVzdC5zZXRIVFRQT3JpZ2luKG1fZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOwogCi0gICAgYm9vbCBza2lwQ2Fu
TG9hZENoZWNrID0gZmFsc2U7Ci0gICAgbG9hZFJlcXVlc3QoY3Jvc3NPcmlnaW5SZXF1ZXN0LCBz
a2lwQ2FuTG9hZENoZWNrKTsKKyAgICBsb2FkUmVxdWVzdChjcm9zc09yaWdpblJlcXVlc3QsIERv
U2VjdXJpdHlDaGVjayk7CiB9CiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtl
Q3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCkBAIC0xNDIsOCArMTQwLDcgQEAKICAgICAgICAgcHJlZmxpZ2h0UmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoIkFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyIsIFN0
cmluZzo6YWRvcHQoaGVhZGVyQnVmZmVyKSk7CiAgICAgfQogCi0gICAgYm9vbCBza2lwQ2FuTG9h
ZENoZWNrID0gZmFsc2U7Ci0gICAgbG9hZFJlcXVlc3QocHJlZmxpZ2h0UmVxdWVzdCwgc2tpcENh
bkxvYWRDaGVjayk7CisgICAgbG9hZFJlcXVlc3QocHJlZmxpZ2h0UmVxdWVzdCwgRG9TZWN1cml0
eUNoZWNrKTsKIH0KIAogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjp+RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyKCkKQEAgLTI4NCw4ICsyODEsOCBAQAogICAgIE93blB0cjxSZXNvdXJjZVJlcXVl
c3Q+IGFjdHVhbFJlcXVlc3Q7CiAgICAgYWN0dWFsUmVxdWVzdC5zd2FwKG1fYWN0dWFsUmVxdWVz
dCk7CiAKLSAgICBib29sIHNraXBDYW5Mb2FkQ2hlY2sgPSB0cnVlOyAgLy8gb2sgdG8gc2tpcCBs
b2FkIGNoZWNrIHNpbmNlIHdlIGFscmVhZHkgYXNrZWQgYWJvdXQgdGhlIHByZWZsaWdodCByZXF1
ZXN0Ci0gICAgbG9hZFJlcXVlc3QoKmFjdHVhbFJlcXVlc3QsIHNraXBDYW5Mb2FkQ2hlY2spOwor
ICAgIC8vIEl0IHNob3VsZCBiZSBvayB0byBza2lwIHRoZSBzZWN1cml0eSBjaGVjayBzaW5jZSB3
ZSBhbHJlYWR5IGFza2VkIGFib3V0IHRoZSBwcmVmbGlnaHQgcmVxdWVzdC4KKyAgICBsb2FkUmVx
dWVzdCgqYWN0dWFsUmVxdWVzdCwgU2tpcFNlY3VyaXR5Q2hlY2spOwogfQogCiB2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSgpCkBAIC0yOTMsNyArMjkwLDcg
QEAKICAgICBtX2NsaWVudC0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKCkpOwogfQogCi12b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBib29sIHNraXBDYW5Mb2FkQ2hlY2spCit2b2lkIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1
cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2spCiB7CiAgICAgaWYgKG1fYXN5bmMpIHsKICAg
ICAgICAgLy8gRG9uJ3Qgc25pZmYgY29udGVudCBvciBzZW5kIGxvYWQgY2FsbGJhY2tzIGZvciB0
aGUgcHJlZmxpZ2h0IHJlcXVlc3QuCkBAIC0zMDIsNyArMjk5LDcgQEAKIAogICAgICAgICAvLyBD
bGVhciB0aGUgbG9hZGVyIHNvIHRoYXQgYW55IGNhbGxiYWNrcyBmcm9tIFN1YnJlc291cmNlTG9h
ZGVyOjpjcmVhdGUgd2lsbCBub3QgaGF2ZSB0aGUgb2xkIGxvYWRlci4KICAgICAgICAgbV9sb2Fk
ZXIgPSAwOwotICAgICAgICBtX2xvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9k
b2N1bWVudC0+ZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgc2tpcENhbkxvYWRDaGVjaywgc2VuZExv
YWRDYWxsYmFja3MsIHNuaWZmQ29udGVudCk7CisgICAgICAgIG1fbG9hZGVyID0gU3VicmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShtX2RvY3VtZW50LT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBzZWN1
cml0eUNoZWNrLCBzZW5kTG9hZENhbGxiYWNrcywgc25pZmZDb250ZW50KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuY3BwCShyZXZpc2lvbiA1MjE1OCkKKysr
IFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgs
MTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZXF1ZXN0OjpSZXF1ZXN0KERvY0xvYWRl
ciogZG9jTG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogb2JqZWN0LCBib29sIGluY3JlbWVudGFsLCBi
b29sIHNob3VsZFNraXBDYW5Mb2FkQ2hlY2ssIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNr
cykKK1JlcXVlc3Q6OlJlcXVlc3QoRG9jTG9hZGVyKiBkb2NMb2FkZXIsIENhY2hlZFJlc291cmNl
KiBvYmplY3QsIGJvb2wgaW5jcmVtZW50YWwsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2hvdWxkRG9T
ZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpCiAgICAgOiBtX29i
amVjdChvYmplY3QpCiAgICAgLCBtX2RvY0xvYWRlcihkb2NMb2FkZXIpCiAgICAgLCBtX2luY3Jl
bWVudGFsKGluY3JlbWVudGFsKQogICAgICwgbV9tdWx0aXBhcnQoZmFsc2UpCi0gICAgLCBtX3No
b3VsZFNraXBDYW5Mb2FkQ2hlY2soc2hvdWxkU2tpcENhbkxvYWRDaGVjaykKKyAgICAsIG1fc2hv
dWxkRG9TZWN1cml0eUNoZWNrKHNob3VsZERvU2VjdXJpdHlDaGVjaykKICAgICAsIG1fc2VuZFJl
c291cmNlTG9hZENhbGxiYWNrcyhzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKQogewogICAgIG1f
b2JqZWN0LT5zZXRSZXF1ZXN0KHRoaXMpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiA1MjE1OCkKKysrIFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDggQEAKIAogI2lmbmRlZiBTdWJyZXNvdXJj
ZUxvYWRlcl9oCiAjZGVmaW5lIFN1YnJlc291cmNlTG9hZGVyX2gKLSAKKworI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgogIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzksNyBAQAogICAgIAogICAgIGNsYXNzIFN1YnJlc291
cmNlTG9hZGVyIDogcHVibGljIFJlc291cmNlTG9hZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBTdWJy
ZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgc2tpcENh
bkxvYWRDaGVjayA9IGZhbHNlLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVl
LCBib29sIHNob3VsZENvbnRlbnRTbmlmZiA9IHRydWUpOworICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gY3JlYXRlKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJD
bGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eUNoZWNrUG9saWN5ID0gRG9T
ZWN1cml0eUNoZWNrLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlLCBib29s
IHNob3VsZENvbnRlbnRTbmlmZiA9IHRydWUpOwogCiAgICAgICAgIHZvaWQgY2xlYXJDbGllbnQo
KSB7IG1fY2xpZW50ID0gMDsgfQogCg==
</data>
<flag name="review"
          id="26843"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>