<?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>125333</bug_id>
          
          <creation_ts>2013-12-05 20:53:43 -0800</creation_ts>
          <short_desc>[Cocoa] Add load delegate methods for responding to authentication challenges</short_desc>
          <delta_ts>2013-12-06 11:32:31 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>125334</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>957144</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-12-05 20:53:43 -0800</bug_when>
    <thetext>[Cocoa] Add load delegate methods for responding to authentication challenges</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957147</commentid>
    <comment_count>1</comment_count>
      <attachid>218568</attachid>
    <who name="">mitz</who>
    <bug_when>2013-12-05 21:09:32 -0800</bug_when>
    <thetext>Created attachment 218568
THIS IS YOUR CHALLENGE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957269</commentid>
    <comment_count>2</comment_count>
      <attachid>218568</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-06 09:43:56 -0800</bug_when>
    <thetext>Comment on attachment 218568
THIS IS YOUR CHALLENGE

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:52
&gt; +    static dispatch_once_t token;
&gt; +    static WKNSURLAuthenticationChallengeSender *sender;
&gt; +    dispatch_once(&amp;token, ^{
&gt; +        sender = [[WKNSURLAuthenticationChallengeSender alloc] init];
&gt; +    });

I don&apos;t understand how this works. I know that this is how we always use dispatch_once, and that man dispatch_once has this pattern as example, but I still don&apos;t understand how a regular static dispatch_once_t token can be used here without thread safe statics.

And if we had thread safe statics, we&apos;d just use 

static WKNSURLAuthenticationChallengeSender *sender = [[WKNSURLAuthenticationChallengeSender alloc] init];

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:69
&gt; +        [NSException raise:NSInvalidArgumentException format:@&quot;The challenge was not sent by the receiver.&quot;];

Not sure what this error is saying. It seems like a regular situation when something is not sent by its receiver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957274</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-12-06 09:59:46 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 218568 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=218568&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:52
&gt; &gt; +    static dispatch_once_t token;
&gt; &gt; +    static WKNSURLAuthenticationChallengeSender *sender;
&gt; &gt; +    dispatch_once(&amp;token, ^{
&gt; &gt; +        sender = [[WKNSURLAuthenticationChallengeSender alloc] init];
&gt; &gt; +    });
&gt; 
&gt; I don&apos;t understand how this works. I know that this is how we always use dispatch_once, and that man dispatch_once has this pattern as example, but I still don&apos;t understand how a regular static dispatch_once_t token can be used here without thread safe statics.

I am not sure what part is not understood. The compiler option we use is documented as follows:
    -fno-threadsafe-statics    Do not emit code to make initialization of local statics thread safe
which has nothing to do with the value of uninitialized local statics.

&gt; And if we had thread safe statics, we&apos;d just use 
&gt; 
&gt; static WKNSURLAuthenticationChallengeSender *sender = [[WKNSURLAuthenticationChallengeSender alloc] init];

Right.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:69
&gt; &gt; +        [NSException raise:NSInvalidArgumentException format:@&quot;The challenge was not sent by the receiver.&quot;];
&gt; 
&gt; Not sure what this error is saying. It seems like a regular situation when something is not sent by its receiver.

“receiver” here is the receiver of the Objective-C message (i.e. &apos;self&apos; in the context of this code). It is a programming error to do [s cancelAuthenticationChallenge:c] if s != c.sender.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957285</commentid>
    <comment_count>4</comment_count>
      <attachid>218568</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-06 10:15:12 -0800</bug_when>
    <thetext>Comment on attachment 218568
THIS IS YOUR CHALLENGE

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm:52
&gt;&gt;&gt; +    });
&gt;&gt; 
&gt;&gt; I don&apos;t understand how this works. I know that this is how we always use dispatch_once, and that man dispatch_once has this pattern as example, but I still don&apos;t understand how a regular static dispatch_once_t token can be used here without thread safe statics.
&gt;&gt; 
&gt;&gt; And if we had thread safe statics, we&apos;d just use 
&gt;&gt; 
&gt;&gt; static WKNSURLAuthenticationChallengeSender *sender = [[WKNSURLAuthenticationChallengeSender alloc] init];
&gt; 
&gt; I am not sure what part is not understood. The compiler option we use is documented as follows:
&gt;     -fno-threadsafe-statics    Do not emit code to make initialization of local statics thread safe
&gt; which has nothing to do with the value of uninitialized local statics.

To me this looks correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957288</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-12-06 10:18:28 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r160227&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957307</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-12-06 10:56:52 -0800</bug_when>
    <thetext>&gt; I am not sure what part is not understood. The compiler option we use is documented as follows:
&gt;     -fno-threadsafe-statics    Do not emit code to make initialization of local statics thread safe
&gt; which has nothing to do with the value of uninitialized local statics.

Is &quot;value of uninitialized local statics&quot; a concept that actually exists in C++?

My understanding is that these are conceptually initialized, it&apos;s just that the initialization happens at magic times. And the magic doesn&apos;t guarantee the safety of this pattern is all compliant C++ implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957323</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-06 11:32:31 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Is &quot;value of uninitialized local statics&quot; a concept that actually exists in C++?
&gt; 
&gt; My understanding is that these are conceptually initialized, it&apos;s just that the initialization happens at magic times. And the magic doesn&apos;t guarantee the safety of this pattern is all compliant C++ implementations.

There is not a practical problem with this for dispatch_once tokens on any platform that we are using libdispatch with. But I see your point and there may be a theoretical problem on some other platforms.

Local statics initialized to a constant are implemented the same was as “statics outside a function” (not sure these are the right terms). But you may be right that the C++ concepts for local statics that need to run code to initialize them may contaminate the behavior for these constant-initialized ones as well and create a theoretical portability problem.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218568</attachid>
            <date>2013-12-05 21:09:32 -0800</date>
            <delta_ts>2013-12-06 10:15:12 -0800</delta_ts>
            <desc>THIS IS YOUR CHALLENGE</desc>
            <filename>bug-125333-20131205210934.patch</filename>
            <type>text/plain</type>
            <size>22571</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDIxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTA1ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgbG9hZCBkZWxl
Z2F0ZSBtZXRob2RzIGZvciByZXNwb25kaW5nIHRvIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTMzMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46IEV4cG9ydGVkIGNvcmUoTlNVUkxDcmVkZW50aWFsICopLgorCiAyMDEzLTEyLTA1
ICBab2x0YW4gSG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENsZWFuIHVw
IHRoZSBmb3J3YXJkaW5nIGhlYWRlcnMgb2YgUmVuZGVyQmxvY2suaApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHJldmlzaW9uIDE2MDIxMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC05ODUsNiArOTg1LDcgQEAgX19aTjdXZWJDb3JlNFBhZ2VE
MUV2CiBfX1pON1dlYkNvcmU0UGF0aDE0YWRkUm91bmRlZFJlY3RFUktOU185RmxvYXRSZWN0RVJL
TlNfOUZsb2F0U2l6ZUVOUzBfMTlSb3VuZGVkUmVjdFN0cmF0ZWd5RQogX19aTjdXZWJDb3JlNFBh
dGhDMUV2CiBfX1pON1dlYkNvcmU0UGF0aEQxRXYKK19fWk43V2ViQ29yZTRjb3JlRVAxNU5TVVJM
Q3JlZGVudGlhbAogX19aTjdXZWJDb3JlNGNvcmVFUDIwTlNVUkxQcm90ZWN0aW9uU3BhY2UKIF9f
Wk43V2ViQ29yZTRjb3JlRVAyOE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKIF9fWk43V2Vi
Q29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEw
Q2xpZW50UmVjdEUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDIxMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEzLTEy
LTA1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBB
ZGQgbG9hZCBkZWxlZ2F0ZSBtZXRob2RzIGZvciByZXNwb25kaW5nIHRvIGF1dGhlbnRpY2F0aW9u
IGNoYWxsZW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNTMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0Ojpu
ZXdPYmplY3QpOiBBbGxvY2F0ZSBhIFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBpZiB0
aGUgb2JqZWN0IGlzIGFuCisgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ci5tbToKKyAgICAgICAgKGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZy
YW1lKTogSW1wbGVtZW50ZWQgdGhpcyBXS1BhZ2VMb2FkZXJDbGllbnQgY2FsbGJhY2sKKyAgICAg
ICAgYnkgY2FsbGluZyB0aGUgbG9hZCBkZWxlZ2F0ZS4KKyAgICAgICAgKGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKHNldFVwUGFnZUxv
YWRlckNsaWVudCk6IFNldCB0aGUgYWJvdmUgY2FsbGJhY2tzIGluIHRoZSBjbGllbnQgc3RydWN0
dXJlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZVByaXZhdGUuaDogQWRkZWQuIERlY2xhcmVzIHR3byBuZXcKKyAgICAgICAgZGVs
ZWdhdGUgbWV0aG9kcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVy
KTogQWRkZWQuIFJldHVybnMgYW4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eeKAmXMgd3Jh
cHBlciBhcyBhbgorICAgICAgICBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1t
OiBBZGRlZC4KKyAgICAgICAgKC1bV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF93ZWJf
Y3JlYXRlVGFyZ2V0XSk6IE92ZXJyaWRlIHRoaXMgV0tPYmplY3QgbWV0aG9kIHRvCisgICAgICAg
IHJldHVybiBhIGNvcHkgb2YgdGhlIGNoYWxsZW5nZSB3aXRoIHRoZSBzZW5kZXIgc2V0IHRvIGEg
c2hhcmVkIGluc3RhbmNlIG9mCisgICAgICAgIFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVNlbmRlci4KKyAgICAgICAgKC1bV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIF93ZWJf
YXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eV0pOiBBZGRlZC4gUmV0dXJucyB0aGUKKyAgICAg
ICAgd3JhcHBlZCBvYmplY3QuCisgICAgICAgICgtW1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlciBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpdKTogQWRkZWQuIENhbGxz
CisgICAgICAgIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjo6Y2FuY2VsLgorICAgICAg
ICAoLVtXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgY29udGludWVXaXRob3V0
Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0pOgorICAgICAgICBBZGRlZC4g
Q2FsbHMgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjp1c2VDcmVkZW50aWFsLCBwYXNz
aW5nIG51bGxwdHIuCisgICAgICAgICgtW1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlciB1c2VDcmVkZW50aWFsOmZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0pOiBBZGRlZC4K
KyAgICAgICAgQ2FsbHMgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOjp1c2VDcmVkZW50
aWFsLCBwYXNzaW5nIHRoZSBjcmVkZW50aWFsLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCByZWZlcmVuY2VzIHRvIG5ldyBmaWxlcy4KKwogMjAx
My0xMi0wNCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFj
dG9yIHN0YXRpYyBnZXR0ZXIgZnVuY3Rpb24gcHJvdG90eXBlIHRvIGluY2x1ZGUgdGhpc1ZhbHVl
IGluIGFkZGl0aW9uIHRvIHRoZSBiYXNlIG9iamVjdApJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCShyZXZpc2lvbiAxNjAyMTApCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3
IEBACiAjaW1wb3J0ICJXS05TRXJyb3IuaCIKICNpbXBvcnQgIldLTlNTdHJpbmcuaCIKICNpbXBv
cnQgIldLTlNVUkwuaCIKKyNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IgogI2ltcG9ydCAiV0tOU1VSTFByb3RlY3Rpb25TcGFjZS5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0
aW9uRGF0YUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NHcm91cEludGVybmFsLmgiCkBA
IC02Niw2ICs2NywxMCBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlw
CiAgICAgICAgIHdyYXBwZXIgPSBbV0tOU0FycmF5IGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIFR5cGU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOgorICAgICAgICB3cmFwcGVy
ID0gTlNBbGxvY2F0ZU9iamVjdChbV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHNlbGZd
LCBzaXplLCBudWxscHRyKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFR5cGU6OkJhY2tG
b3J3YXJkTGlzdDoKICAgICAgICAgd3JhcHBlciA9IFtXS0JhY2tGb3J3YXJkTGlzdCBhbGxvY107
CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0J
KHJldmlzaW9uIDE2MDIxMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICsz
Nyw5IEBACiAjaW1wb3J0ICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKICNpbXBvcnQgIldLTlNB
cnJheS5oIgogI2ltcG9ydCAiV0tOU0Vycm9yLmgiCisjaW1wb3J0ICJXS05TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQgIldL
TlNVUkxQcm90ZWN0aW9uU3BhY2UuaCIKICNpbXBvcnQgIldLUmV0YWluUHRyLmgiCiAjaW1wb3J0
ICJXS1VSTFJlcXVlc3ROUy5oIgogI2ltcG9ydCAiV0tVUkxSZXNwb25zZU5TLmgiCkBAIC00Nyw3
ICs0OSw3IEBACiAKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgotI2ltcG9ydCAiV0tC
cm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0
TG9hZERlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRQb2xpY3lE
ZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV0tQcm9jZXNzR3JvdXBJbnRlcm5hbC5oIgogCkBAIC00Mzks
NiArNDQxLDI2IEBAIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUKICAg
ICB9CiB9CiAKK3N0YXRpYyBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2VJbkZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1Byb3RlY3Rpb25T
cGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAg
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpicm93c2luZ0NvbnRleHQgPSAoV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9
IGJyb3dzaW5nQ29udGV4dC0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKKworICAgIGlmIChbbG9hZERl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlcjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOildKQorICAgICAgICBy
ZXR1cm4gWyhpZCA8V0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVQcml2YXRlPilsb2FkRGVs
ZWdhdGUgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjpicm93c2luZ0NvbnRleHQgY2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTp3cmFwcGVyKCp0b0ltcGwocHJvdGVjdGlvblNw
YWNlKSldOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIFdLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciAqYnJvd3NpbmdDb250ZXh0ID0gKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAq
KWNsaWVudEluZm87CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9s
b2FkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOildKQorICAgICAgICBbKGlkIDxXS0Jyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZVByaXZhdGU+KWxvYWREZWxlZ2F0ZSBicm93c2luZ0NvbnRleHRDb250cm9sbGVy
OmJyb3dzaW5nQ29udGV4dCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBl
cigqdG9JbXBsKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSldOworfQorCiBzdGF0aWMgdm9pZCBk
aWRTdGFydFByb2dyZXNzKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQog
ewogICAgIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0ID0gKFdL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CkBAIC00OTMsNiArNTE1LDkg
QEAgc3RhdGljIHZvaWQgc2V0VXBQYWdlTG9hZGVyQ2xpZW50KFdLQnJvdwogICAgIGxvYWRlckNs
aWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7CiAgICAg
bG9hZGVyQ2xpZW50LmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUgPSBkaWRGYWlsTG9hZFdp
dGhFcnJvckZvckZyYW1lOwogCisgICAgbG9hZGVyQ2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lID0gY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZUluRnJhbWU7CisgICAgbG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUluRnJhbWUgPSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZy
YW1lOworCiAgICAgbG9hZGVyQ2xpZW50LmRpZFN0YXJ0UHJvZ3Jlc3MgPSBkaWRTdGFydFByb2dy
ZXNzOwogICAgIGxvYWRlckNsaWVudC5kaWRDaGFuZ2VQcm9ncmVzcyA9IGRpZENoYW5nZVByb2dy
ZXNzOwogICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hQcm9ncmVzcyA9IGRpZEZpbmlzaFByb2dy
ZXNzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dExvYWREZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlUHJpdmF0
ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0Jyb3dzaW5nQ29u
dGV4dExvYWREZWxlZ2F0ZS5oPgorCitAcHJvdG9jb2wgV0tCcm93c2luZ0NvbnRleHRMb2FkRGVs
ZWdhdGVQcml2YXRlIDxXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZT4KK0BvcHRpb25hbAor
CistIChCT09MKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6KFdLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciAqKXNlbmRlciBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOihO
U1VSTFByb3RlY3Rpb25TcGFjZSAqKXByb3RlY3Rpb25TcGFjZTsKKy0gKHZvaWQpYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlcjooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAqKWNoYWxsZW5nZTsKKworQGVuZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCisK
KyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworaW5s
aW5lIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKndyYXBwZXIoQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKQoreworICAgIEFTU0VSVChbY2hhbGxlbmdlLndyYXBw
ZXIoKSBpc0tpbmRPZkNsYXNzOltOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHNlbGZdXSk7
CisgICAgcmV0dXJuIChOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlLndy
YXBwZXIoKTsKK30KKworfQorCitAaW50ZXJmYWNlIFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSA6IFdLT2JqZWN0CitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UubW0JKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lci5oIgorI2ltcG9ydCAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCisjaW1wb3J0
ICJXZWJDcmVkZW50aWFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFjLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
QGludGVyZmFjZSBXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgOiBOU09iamVj
dCA8TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcj4KK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZQorCistIChOU09iamVjdCAqKV93
ZWJfY3JlYXRlVGFyZ2V0Cit7CisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hh
bGxlbmdlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSo+
KCZzZWxmLl9hcGlPYmplY3QpOworCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCB0b2tlbjsK
KyAgICBzdGF0aWMgV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyICpzZW5kZXI7
CisgICAgZGlzcGF0Y2hfb25jZSgmdG9rZW4sIF57CisgICAgICAgIHNlbmRlciA9IFtbV0tOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIGFsbG9jXSBpbml0XTsKKyAgICB9KTsKKwor
ICAgIHJldHVybiBbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYWxsb2NdIGluaXRXaXRo
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bWFjKGNoYWxsZW5nZS5jb3JlKCkpIHNlbmRlcjpzZW5k
ZXJdOworfQorCistIChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Jilfd2ViX2F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkKK3sKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSo+KCZzZWxmLl9hcGlPYmplY3QpOworfQorCitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIK
KworLSAodm9pZCljYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQoreworICAgIGlmIChbY2hhbGxlbmdlIGNsYXNzXSAh
PSBbV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNsYXNzXSkKKyAgICAgICAgW05TRXhj
ZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBjaGFs
bGVuZ2Ugd2FzIG5vdCBzZW50IGJ5IHRoZSByZWNlaXZlci4iXTsKKworICAgIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkmIHdlYkNoYWxsZW5nZSA9ICgoV0tOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICopY2hhbGxlbmdlKS5fd2ViX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7
CisgICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVyKCktPmNhbmNlbCgpOworfQorCistICh2b2lkKWNv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQoreworICAgIGlmIChbY2hhbGxlbmdl
IGNsYXNzXSAhPSBbV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNsYXNzXSkKKyAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpA
IlRoZSBjaGFsbGVuZ2Ugd2FzIG5vdCBzZW50IGJ5IHRoZSByZWNlaXZlci4iXTsKKworICAgIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIHdlYkNoYWxsZW5nZSA9ICgoV0tOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlKS5fd2ViX2F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHk7CisgICAgd2ViQ2hhbGxlbmdlLmxpc3RlbmVyKCktPnVzZUNyZWRlbnRpYWwobnVs
bHB0cik7Cit9CisKKy0gKHZvaWQpdXNlQ3JlZGVudGlhbDooTlNVUkxDcmVkZW50aWFsICopY3Jl
ZGVudGlhbCBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqKWNoYWxsZW5nZQoreworICAgIGlmIChbY2hhbGxlbmdlIGNsYXNzXSAhPSBbV0tO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNsYXNzXSkKKyAgICAgICAgW05TRXhjZXB0aW9u
IHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlRoZSBjaGFsbGVuZ2Ug
d2FzIG5vdCBzZW50IGJ5IHRoZSByZWNlaXZlci4iXTsKKworICAgIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkmIHdlYkNoYWxsZW5nZSA9ICgoV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICopY2hhbGxlbmdlKS5fd2ViX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CisKKyAg
ICB3ZWJDaGFsbGVuZ2UubGlzdGVuZXIoKS0+dXNlQ3JlZGVudGlhbChXZWJDcmVkZW50aWFsOjpj
cmVhdGUoY29yZShjcmVkZW50aWFsKSkuZ2V0KCkpOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTYwMjEwKQorKysgU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NzUs
NiArNDc1LDkgQEAKIAkJMzdERkE3MDAxODEwQkI5MjAwMUY0QTlGIC8qIFdLRm91bmRhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdERkE2RkYx
ODEwQkI5MjAwMUY0QTlGIC8qIFdLRm91bmRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJMzdGNjIzQjgxMkE1N0I2MjAwRTNGREY2IC8qIFdL
RmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3RjYyM0I3MTJBNTdCNjIwMEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdGOTBERTMxMzc2NTYw
RTAwNTFDRjY4IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2Mzg5NTRGMTMzQkVGMzgwMDg5NDFENSAvKiBI
VFRQQ29va2llQWNjZXB0UG9saWN5LmggKi87IH07CisJCTM3RkMxOTQ3MTg1MEZCRjIwMDhDRkE0
NyAvKiBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RkMxOTQ2MTg1MEZCRjIwMDhDRkE0
NyAvKiBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVByaXZhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzN0ZDMTk0QTE4NTEwRDZBMDA4
Q0ZBNDcgLyogV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGQzE5NDgxODUxMEQ2QTAwOENGQTQ3
IC8qIFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbSAqLzsgfTsKKwkJMzdGQzE5NEIx
ODUxMEQ2QTAwOENGQTQ3IC8qIFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGQzE5NDkxODUxMEQ2
QTAwOENGQTQ3IC8qIFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovOyB9OwogCQkz
Rjg3QjlCRDE1ODk0MDEyMDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGODdCOUJBMTU4OTNGNjMwMDkw
RkY2MiAvKiBXZWJDb2xvckNob29zZXIuY3BwICovOyB9OwogCQkzRjg3QjlCRTE1ODk0MDE5MDA5
MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzRjg3QjlCQjE1ODkzRjYzMDA5MEZGNjIgLyogV2ViQ29sb3JDaG9v
c2VyLmggKi87IH07CiAJCTNGODdCOUMwMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvclBpY2tl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y4N0I5
QkYxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yUGlja2VyLmggKi87IH07CkBAIC0yMDE3LDYg
KzIwMjAsOSBAQAogCQkzN0QwQjVDNzE4NDUyMzI3MDBGNkNFN0QgLyogV0tFcnJvclJlY292ZXJ5
QXR0ZW1wdGluZy5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS0Vycm9y
UmVjb3ZlcnlBdHRlbXB0aW5nLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3REZB
NkZGMTgxMEJCOTIwMDFGNEE5RiAvKiBXS0ZvdW5kYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM3RjYyM0I3MTJBNTdCNjIwMEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmluZE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzdGQzE5NDYxODUwRkJGMjAwOENGQTQ3IC8qIFdLQnJvd3NpbmdDb250
ZXh0TG9hZERlbGVnYXRlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzdGQzE5NDgxODUxMEQ2QTAwOENGQTQ3IC8qIFdLTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzdGQzE5NDkxODUxMEQ2QTAwOENGQTQ3IC8qIFdLTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
M0Y4N0I5QkExNTg5M0Y2MzAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb2xvckNob29zZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzRjg3QjlCQjE1ODkzRjYzMDA5MEZGNjIgLyogV2ViQ29s
b3JDaG9vc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yQ2hv
b3Nlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzRjg3QjlCRjE1ODk0MEQ4MDA5
MEZGNjIgLyogV2ViQ29sb3JQaWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ29sb3JQaWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3OTMs
NiArMzc5OSw3IEBACiAJCQkJQkNCQUFDRjAxNDUyMzI0ODAwNTNGODJGIC8qIFdLQnJvd3NpbmdD
b250ZXh0R3JvdXBQcml2YXRlLmggKi8sCiAJCQkJMzcwRjM0QTYxODI5Q0ZGMzAwOTAyN0M4IC8q
IFdLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlLmggKi8sCiAJCQkJQkNCQUFEMEExNDU2
MEE0MzAwNTNGODJGIC8qIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmggKi8sCisJCQkJ
MzdGQzE5NDYxODUwRkJGMjAwOENGQTQ3IC8qIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRl
UHJpdmF0ZS5oICovLAogCQkJCTdDQTI1NEVBMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5n
Q29udGV4dFBvbGljeURlbGVnYXRlLmggKi8sCiAJCQkJQkNBMjg0RDUxNDkyRjJDNzAwMUY5MDQy
IC8qIFdLQ29ubmVjdGlvbi5oICovLAogCQkJCUJDQTI4NEQ0MTQ5MkYyQzcwMDFGOTA0MiAvKiBX
S0Nvbm5lY3Rpb24ubW0gKi8sCkBAIC0zODAyLDYgKzM4MDksOCBAQAogCQkJCTM3MEYzNEExMTgy
OUJFMUUwMDkwMjdDOCAvKiBXS05hdmlnYXRpb25EYXRhLmggKi8sCiAJCQkJMzcwRjM0QTAxODI5
QkUxRTAwOTAyN0M4IC8qIFdLTmF2aWdhdGlvbkRhdGEubW0gKi8sCiAJCQkJMzcwRjM0QTQxODI5
QkVBMzAwOTAyN0M4IC8qIFdLTmF2aWdhdGlvbkRhdGFJbnRlcm5hbC5oICovLAorCQkJCTM3RkMx
OTQ5MTg1MTBENkEwMDhDRkE0NyAvKiBXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAq
LywKKwkJCQkzN0ZDMTk0ODE4NTEwRDZBMDA4Q0ZBNDcgLyogV0tOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLm1tICovLAogCQkJCUJDQkFBQ0U1MTQ1MjI1QzkwMDUzRjgyRiAvKiBXS1Byb2Nl
c3NHcm91cC5oICovLAogCQkJCUJDQkFBQ0U2MTQ1MjI1Q0EwMDUzRjgyRiAvKiBXS1Byb2Nlc3NH
cm91cC5tbSAqLywKIAkJCQk3QzFGQjNCRjE4NDZBRUZDMDAxQTAzRDggLyogV0tQcm9jZXNzR3Jv
dXBJbnRlcm5hbC5oICovLApAQCAtNTg0Myw2ICs1ODUyLDcgQEAKIAkJCQlCQzcyQkExRTExRTY0
OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MThEMkNBRTEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM3MkI5RkIxMUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQkzN0ZDMTk0QjE4NTEwRDZBMDA4Q0ZBNDcg
LyogV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0Y1MDcyODEyNDMyOUFBMDA1OTU1QUUgLyogV2ViQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzAzMkQ3NTEwRjQzNzhEMDA1OEMxNUEgLyogV2ViQ2hyb21lQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTVFNzczNDE4NDAyRDUxMDAwNzIwM0YgLyogVW5pcXVlSURC
RGF0YWJhc2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTYxMDIsNiArNjExMiw3IEBA
CiAJCQkJQkM1NENDMTIxMkQ2NzRFRTAwNUM2N0IwIC8qIFdLR2VvbG9jYXRpb25NYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzA2RjQ0RTEyREJERjNGMDAyRDc4REUgLyogV0tHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzBFNjE5ODEyRDZD
RDEyMDAxMkE3MkEgLyogV0tHZW9sb2NhdGlvblBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkzN0ZDMTk0NzE4NTBGQkYyMDA4Q0ZBNDcgLyogV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdh
dGVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M4QjM3NDEyNUZCNjkwMDBERTQ2QTQg
LyogV0tHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjYyRTczMTIxNDMwNDdCMDAwNjlF
QzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMEFFMEQxMzND
MTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTcwNDcs
NiArNzA1OCw3IEBACiAJCQkJNTE2MzE5OTQxNjI4OUE2MDAwRTIyRjAwIC8qIE5ldHdvcmtQcm9j
ZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNEE5NTQ5MTZFMDE2
QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTc5NTU2RDE2Mjg3N0IxMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzN0ZDMTk0QTE4NTEwRDZBMDA4Q0ZBNDcgLyog
V0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2
MzE5OTIxNjI4OTgwQTAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1MTNBMTYzQzE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUZEMThCNTE2NTFG
QkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="242035"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>