<?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>153078</bug_id>
          
          <creation_ts>2016-01-13 13:19:17 -0800</creation_ts>
          <short_desc>Implement custom protocols when using NetworkSession</short_desc>
          <delta_ts>2016-01-13 18:44:06 -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>New Bugs</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1155205</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-13 13:19:17 -0800</bug_when>
    <thetext>Implement custom protocols when using NetworkSession</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155214</commentid>
    <comment_count>1</comment_count>
      <attachid>268900</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-13 13:27:11 -0800</bug_when>
    <thetext>Created attachment 268900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155307</commentid>
    <comment_count>2</comment_count>
      <attachid>268900</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-13 16:58:40 -0800</bug_when>
    <thetext>Comment on attachment 268900
Patch

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

&gt; Source/WebKit2/NetworkProcess/CustomProtocols/Cocoa/CustomProtocolManagerCocoa.mm:194
&gt; +    auto copy = Block_copy(block);
&gt; +    callOnMainThread([copy] {
&gt; +        copy();
&gt; +        Block_release(copy);
&gt; +    });

This isn&apos;t right. NSURLSession might deliver your delegate callbacks on the main thread, but it interacts with NSURLProtocol instances on a private background queue. You can see this by setting a breakpoint in -[WKCustomProtocol startLoading]. You&apos;ll see a backtrace like this:

* thread #8: tid = 0x2b100f, 0x000000010000107c NSURLSessionTest`-[CustomProtocol startLoading](self=0x0000658000000190, _cmd=&quot;startLoading&quot;) + 12 at ViewController.m:28, name = &apos;com.apple.NSURLConnectionLoader&apos;, stop reason = breakpoint 1.1
  * frame #0: 0x000000010000107c NSURLSessionTest`-[CustomProtocol startLoading](self=0x0000658000000190, _cmd=&quot;startLoading&quot;) + 12 at ViewController.m:28
    frame #1: 0x0000000100055fd4 CFNetwork`___ZN19URLConnectionLoader27_private_ScheduleOriginLoadEPK12NSURLRequestPK20_CFCachedURLResponse_block_invoke_2 + 61
    frame #2: 0x0000000100055f75 CFNetwork`___ZNK19URLConnectionLoader25withExistingProtocolAsyncEU13block_pointerFvP11URLProtocolE_block_invoke + 25
    frame #3: 0x00000001008abbf9 libdispatch.dylib`_dispatch_client_callout + 8
    frame #4: 0x00000001008bbe09 libdispatch.dylib`_dispatch_block_invoke + 920
    frame #5: 0x0000000100054e00 CFNetwork`RunloopBlockContext::_invoke_block(void const*, void*) + 24
    frame #6: 0x00007fff8f5e84d4 CoreFoundation`CFArrayApplyFunction + 68
    frame #7: 0x0000000100054cf9 CFNetwork`RunloopBlockContext::perform() + 137
    frame #8: 0x0000000100054b9a CFNetwork`MultiplexerSource::perform() + 282
    frame #9: 0x00000001000549bc CFNetwork`MultiplexerSource::_perform(void*) + 72
    frame #10: 0x00007fff8f645fe1 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    frame #11: 0x00007fff8f62571c CoreFoundation`__CFRunLoopDoSources0 + 556
    frame #12: 0x00007fff8f624c3f CoreFoundation`__CFRunLoopRun + 927
    frame #13: 0x00007fff8f624638 CoreFoundation`CFRunLoopRunSpecific + 296
    frame #14: 0x000000010002f6e9 CFNetwork`+[NSURLConnection(Loader) _resourceLoadLoop:] + 412
    frame #15: 0x00007fff919cfd64 Foundation`__NSThread__start__ + 1351
    frame #16: 0x0000000100915805 libsystem_pthread.dylib`_pthread_body + 131
    frame #17: 0x0000000100915782 libsystem_pthread.dylib`_pthread_start + 168
    frame #18: 0x0000000100912fa1 libsystem_pthread.dylib`thread_start + 13

So we need to be able to dispatch these blocks to com.apple.NSURLConnectionLoader in order to guarantee thread safety.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155320</commentid>
    <comment_count>3</comment_count>
      <attachid>268924</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-13 17:20:55 -0800</bug_when>
    <thetext>Created attachment 268924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155322</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-13 17:22:34 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 268900 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268900&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/CustomProtocols/Cocoa/CustomProtocolManagerCocoa.mm:194
&gt; &gt; +    auto copy = Block_copy(block);
&gt; &gt; +    callOnMainThread([copy] {
&gt; &gt; +        copy();
&gt; &gt; +        Block_release(copy);
&gt; &gt; +    });
&gt; 
&gt; So we need to be able to dispatch these blocks to
&gt; com.apple.NSURLConnectionLoader in order to guarantee thread safety.
You are correct.  The tests pass without this change, and this change is incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155336</commentid>
    <comment_count>5</comment_count>
      <attachid>268924</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-13 18:44:04 -0800</bug_when>
    <thetext>Comment on attachment 268924
Patch

Clearing flags on attachment: 268924

Committed r195005: &lt;http://trac.webkit.org/changeset/195005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155337</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-13 18:44:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268900</attachid>
            <date>2016-01-13 13:27:11 -0800</date>
            <delta_ts>2016-01-13 17:20:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153078-20160113132642.patch</filename>
            <type>text/plain</type>
            <size>11479</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NDkwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAxLTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IGN1c3RvbSBwcm90b2NvbHMgd2hlbiB1c2luZyBOZXR3b3JrU2Vzc2lvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMDc4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBidXQgdGhp
cyBtYWtlcyB0aGUgV2ViS2l0MkN1c3RvbVByb3RvY29sc1Rlc3QgYXBpIHRlc3RzIHBhc3Mgd2hl
biB1c2luZyBOZXR3b3JrU2Vzc2lvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgTWFrZSBOU1VSTENvbm5lY3Rpb25TUEkuaCBwcml2YXRl
IHNvIHdlIGNhbiBpbmNsdWRlIGl0IGZyb20gd2l0aGluIFdlYktpdDIuCisKIDIwMTYtMDEtMTIg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTQ4MjYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTQ5MDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMzYsNyArMTMzNiw3IEBACiAJCTMxQTc5NUM3MTg4OEJDQjIwMDM4MkY5MCAv
KiBBTkdMRUluc3RhbmNlZEFycmF5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzFBNzk1QzIxODg4QjcyNDAwMzgyRjkwIC8qIEFOR0xFSW5zdGFuY2Vk
QXJyYXlzLmggKi87IH07CiAJCTMxQTc5NUM4MTg4OEJDQjUwMDM4MkY5MCAvKiBBTkdMRUluc3Rh
bmNlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUE3OTVDMTE4ODhCNzI0MDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRBcnJheXMuY3Bw
ICovOyB9OwogCQkzMUFCNTAwMDEyMjg3OEEyMDAxQTdEQjAgLyogR3JhcGhpY3NDb250ZXh0M0RJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQUI0
RkZGMTIyODc4QTIwMDFBN0RCMCAvKiBHcmFwaGljc0NvbnRleHQzRElPUy5oICovOyB9OwotCQkz
MUIzMTNEQjFCNjk4NzE2MDBGMkFBQkMgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUIzMTNEQTFCNjk4NzE2MDBG
MkFBQkMgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi87IH07CisJCTMxQjMxM0RCMUI2OTg3MTYw
MEYyQUFCQyAvKiBOU1VSTENvbm5lY3Rpb25TUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQjMxM0RBMUI2OTg3MTYwMEYyQUFCQyAvKiBOU1VSTENv
bm5lY3Rpb25TUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkzMUIzMTNERDFCNjk4N0RCMDBGMkFBQkMgLyogTlNVUkxSZXF1ZXN0U1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUIzMTNEQzFCNjk4
N0RCMDBGMkFBQkMgLyogTlNVUkxSZXF1ZXN0U1BJLmggKi87IH07CiAJCTMxQjMxM0RGMUI2OTg4
QzUwMEYyQUFCQyAvKiBOU0J1dHRvbkNlbGxTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQjMxM0RFMUI2OTg4QzUwMEYyQUFCQyAvKiBOU0J1dHRv
bkNlbGxTUEkuaCAqLzsgfTsKIAkJMzFCQzc0MkQxQUFGRjQ1QzAwNkI0MzQwIC8qIENTU0FuaW1h
dGlvblRyaWdnZXJTY3JvbGxWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMUJDNzQyQjFBQUZGNDVDMDA2QjQzNDAgLyogQ1NTQW5pbWF0aW9u
VHJpZ2dlclNjcm9sbFZhbHVlLmNwcCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5
NDk3OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM2IEBACisyMDE2LTAxLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IGN1c3RvbSBwcm90b2NvbHMgd2hlbiB1c2lu
ZyBOZXR3b3JrU2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUzMDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlQ3VzdG9tUHJv
dG9jb2xJRCk6CisgICAgICAgICgrW1dLQ3VzdG9tUHJvdG9jb2wgY2FuSW5pdFdpdGhSZXF1ZXN0
Ol0pOgorICAgICAgICAoK1tXS0N1c3RvbVByb3RvY29sIGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1
ZXN0Ol0pOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sIGluaXRXaXRoUmVxdWVzdDpjYWNo
ZWRSZXNwb25zZTpjbGllbnQ6XSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2wgc3RhcnRM
b2FkaW5nXSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2wgc3RvcExvYWRpbmddKToKKyAg
ICAgICAgVGhlcmUncyBubyBuZWVkIHRvIGhhdmUgYSBzdGF0aWMgcG9pbnRlciB3aGVuIHdlIGNh
biB1c2UgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbiB0byBhY2Nlc3MgCisgICAgICAgIHRoZSBw
cm9jZXNzLWdsb2JhbCBDdXN0b21Qcm90b2NvbE1hbmFnZXIsIGFuZCBhZGQgbnVsbCBjaGVja3Mg
YmVjYXVzZSB0aGF0J3MgYSBnb29kIHRoaW5nIHRvIGRvLgorICAgICAgICAoV2ViS2l0OjpDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OkN1c3RvbVByb3RvY29sTWFuYWdlcik6CisgICAgICAgIENhbGwg
VVRGOEVuY29kaW5nIHdoZW4gY3JlYXRpbmcgdGhlIEN1c3RvbVByb3RvY29sTWFuYWdlciBvbiB0
aGUgbWFpbiB0aHJlYWQgdG8gbWFrZSBzdXJlIGl0IGV4aXN0cworICAgICAgICBmb3Igd2hlbiB3
ZSBkZWNvZGUgVVJMUyBpbiBSZXNvdXJjZVJlc3BvbnNlcyBmcm9tIElQQyBsYXRlciwgd2hpY2gg
aXMgZG9uZSBvbiBhIGRpZmZlcmVudCBXb3JrUXVldWUuCisgICAgICAgIChXZWJLaXQ6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlbW92ZUN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKFdl
YktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclByb3RvY29sQ2xhc3MpOgorICAg
ICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKToKKyAg
ICAgICAgKFdlYktpdDo6ZGlzcGF0Y2hPblJlc291cmNlTG9hZGVyUnVuTG9vcCk6CisgICAgICAg
IFRoZSBOZXR3b3JrU2Vzc2lvbiBjdXJyZW50bHkgZG9lcyBpdHMgd29yayBvbiB0aGUgbWFpbiB0
aHJlYWQsIHNvIHRvIG1hdGNoIHRoYXQsCisgICAgICAgIGRpc3BhdGNoT25SZXNvdXJjZUxvYWRl
clJ1bkxvb3Agc2hvdWxkIGNhbGwgdGhlIGJsb2NrcyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAg
ICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmFpbFdpdGhFcnJvcik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6
CisgICAgICAgIENhbGwgcmVnaXN0ZXJQcm90b2NvbENsYXNzIHRvIHNldCBjb25maWd1cmF0aW9u
LnByb3RvY29sQ2xhc3NlcyBpZiB0aGVyZSBpcyBhIEN1c3RvbVByb3RvY29sTWFuYWdlci4KKwog
MjAxNi0wMS0xMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIE9wdGlvbnNHVEsuY21ha2UgYW5kIE5FV1MgZm9y
IDIuMTEuMyByZWxlYXNlLgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvQ3Vz
dG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXIuaAkocmV2aXNpb24gMTk0OTAyKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorT0JKQ19DTEFTUyBO
U1VSTFNlc3Npb25Db25maWd1cmF0aW9uOwogT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sOwog
I2Vsc2UKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmgiCkBAIC03Myw2ICs3
NCw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGFkZEN1c3RvbVBy
b3RvY29sKFdLQ3VzdG9tUHJvdG9jb2wgKik7CiAgICAgdm9pZCByZW1vdmVDdXN0b21Qcm90b2Nv
bChXS0N1c3RvbVByb3RvY29sICopOworI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgdm9p
ZCByZWdpc3RlclByb3RvY29sQ2xhc3MoTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiAqKTsKKyNl
bmRpZgogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCShyZXZpc2lvbiAxOTQ5MDIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2Ev
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDMwICsz
MCwyMyBAQAogI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbXBv
cnQgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIkRhdGFS
ZWZlcmVuY2UuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW1wb3J0ICJOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0
IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgorI2ltcG9ydCA8V1RGL01haW5UaHJlYWQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvTlNVUkxDb25uZWN0aW9uU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNl
Lmg+Ci0KLSNpZmRlZiBfX2hhc19pbmNsdWRlCi0jaWYgX19oYXNfaW5jbHVkZSg8Rm91bmRhdGlv
bi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+KQotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTENv
bm5lY3Rpb25Qcml2YXRlLmg+Ci0jZW5kaWYKLSNlbmRpZgotCi1AaW50ZXJmYWNlIE5TVVJMQ29u
bmVjdGlvbiAoKQotKyAoQ0ZSdW5Mb29wUmVmKXJlc291cmNlTG9hZGVyUnVuTG9vcDsKLUBlbmQK
KyNpbXBvcnQgPFdlYkNvcmUvVGV4dEVuY29kaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
KiBzaGFyZWRDdXN0b21Qcm90b2NvbE1hbmFnZXI7Ci0KIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0
ZUN1c3RvbVByb3RvY29sSUQoKQogewogICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVDdXN0b21Q
cm90b2NvbElEID0gMDsKQEAgLTc1LDcgKzY4LDkgQEAgQGludGVyZmFjZSBXS0N1c3RvbVByb3Rv
Y29sIDogTlNVUkxQcm90bwogCiArIChCT09MKWNhbkluaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdAogewotICAgIHJldHVybiBzaGFyZWRDdXN0b21Qcm90b2NvbE1hbmFnZXIt
PnN1cHBvcnRzU2NoZW1lKFtbW3JlcXVlc3QgVVJMXSBzY2hlbWVdIGxvd2VyY2FzZVN0cmluZ10p
OworICAgIGlmIChhdXRvKiBjdXN0b21Qcm90b2NvbE1hbmFnZXIgPSBOZXR3b3JrUHJvY2Vzczo6
c2luZ2xldG9uKCkuc3VwcGxlbWVudDxDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCkpCisgICAgICAg
IHJldHVybiBjdXN0b21Qcm90b2NvbE1hbmFnZXItPnN1cHBvcnRzU2NoZW1lKFtbW3JlcXVlc3Qg
VVJMXSBzY2hlbWVdIGxvd2VyY2FzZVN0cmluZ10pOworICAgIHJldHVybiBOTzsKIH0KIAogKyAo
TlNVUkxSZXF1ZXN0ICopY2Fub25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QKQEAgLTk1LDE5ICs5MCwyMyBAQCAtIChpZClpbml0V2l0aFJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgX2N1c3RvbVByb3Rv
Y29sSUQgPSBnZW5lcmF0ZUN1c3RvbVByb3RvY29sSUQoKTsKLSAgICBzaGFyZWRDdXN0b21Qcm90
b2NvbE1hbmFnZXItPmFkZEN1c3RvbVByb3RvY29sKHNlbGYpOworICAgIGlmIChhdXRvKiBjdXN0
b21Qcm90b2NvbE1hbmFnZXIgPSBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVu
dDxDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCkpCisgICAgICAgIGN1c3RvbVByb3RvY29sTWFuYWdl
ci0+YWRkQ3VzdG9tUHJvdG9jb2woc2VsZik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZv
aWQpc3RhcnRMb2FkaW5nCiB7Ci0gICAgc2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5jaGls
ZFByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OlN0
YXJ0TG9hZGluZyhzZWxmLmN1c3RvbVByb3RvY29sSUQsIFtzZWxmIHJlcXVlc3RdKSwgMCk7Cisg
ICAgaWYgKGF1dG8qIGN1c3RvbVByb3RvY29sTWFuYWdlciA9IE5ldHdvcmtQcm9jZXNzOjpzaW5n
bGV0b24oKS5zdXBwbGVtZW50PEN1c3RvbVByb3RvY29sTWFuYWdlcj4oKSkKKyAgICAgICAgY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLT5jaGlsZFByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHk6OlN0YXJ0TG9hZGluZyhzZWxmLmN1c3RvbVByb3RvY29sSUQs
IFtzZWxmIHJlcXVlc3RdKSwgMCk7CiB9CiAKIC0gKHZvaWQpc3RvcExvYWRpbmcKIHsKLSAgICBz
aGFyZWRDdXN0b21Qcm90b2NvbE1hbmFnZXItPmNoaWxkUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3RvcExvYWRpbmcoc2VsZi5jdXN0b21Qcm90
b2NvbElEKSwgMCk7Ci0gICAgc2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5yZW1vdmVDdXN0
b21Qcm90b2NvbChzZWxmKTsKKyAgICBpZiAoYXV0byogY3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0g
TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyPigpKSB7CisgICAgICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+Y2hpbGRQcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpTdG9wTG9hZGluZyhz
ZWxmLmN1c3RvbVByb3RvY29sSUQpLCAwKTsKKyAgICAgICAgY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
LT5yZW1vdmVDdXN0b21Qcm90b2NvbChzZWxmKTsKKyAgICB9CiB9CiAKIEBlbmQKQEAgLTEyMyw4
ICsxMjIsNyBAQCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkN1c3RvbVByb3RvY29sTWFuCiAgICAg
OiBtX2NoaWxkUHJvY2VzcyhjaGlsZFByb2Nlc3MpCiAgICAgLCBtX21lc3NhZ2VRdWV1ZShXb3Jr
UXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5DdXN0b21Qcm90b2NvbE1hbmFnZXIiKSkK
IHsKLSAgICBBU1NFUlQoIXNoYXJlZEN1c3RvbVByb3RvY29sTWFuYWdlcik7Ci0gICAgc2hhcmVk
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gdGhpczsKKyAgICBXZWJDb3JlOjpVVEY4RW5jb2Rpbmco
KTsKIH0KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemVDb25uZWN0aW9u
KElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKQEAgLTEzNCw3ICsxMzIsOSBAQCB2b2lkIEN1
c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZUNvCiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogeworI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFtOU1VSTFBy
b3RvY29sIHJlZ2lzdGVyQ2xhc3M6W1dLQ3VzdG9tUHJvdG9jb2wgY2xhc3NdXTsKKyNlbmRpZgog
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3Rl
cmVkRm9yQ3VzdG9tUHJvdG9jb2xzLnNpemUoKTsgKytpKQogICAgICAgICByZWdpc3RlclNjaGVt
ZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzW2ldKTsK
QEAgLTE1Myw3ICsxNTMsMTQgQEAgdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlbW92ZUN1
c3RvbQogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleCk7CiAg
ICAgbV9jdXN0b21Qcm90b2NvbE1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2wuY3VzdG9tUHJvdG9j
b2xJRCk7CiB9Ci0gICAgCisKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQordm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyUHJvdG9jb2xDbGFzcyhOU1VSTFNlc3Npb25Db25maWd1
cmF0aW9uICpjb25maWd1cmF0aW9uKQoreworICAgIGNvbmZpZ3VyYXRpb24ucHJvdG9jb2xDbGFz
c2VzID0gQFtbV0tDdXN0b21Qcm90b2NvbCBjbGFzc11dOworfQorI2VuZGlmCisKIHZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkK
IHsKICAgICBBU1NFUlQoIXNjaGVtZS5pc051bGwoKSk7CkBAIC0xNzksOCArMTg2LDE2IEBAIGJv
b2wgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0c1NjaGUKIAogc3RhdGljIGlubGluZSB2
b2lkIGRpc3BhdGNoT25SZXNvdXJjZUxvYWRlclJ1bkxvb3Aodm9pZCAoXmJsb2NrKSgpKQogewor
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgYXV0byBjb3B5ID0gQmxvY2tfY29weShibG9j
ayk7CisgICAgY2FsbE9uTWFpblRocmVhZChbY29weV0geworICAgICAgICBjb3B5KCk7CisgICAg
ICAgIEJsb2NrX3JlbGVhc2UoY29weSk7CisgICAgfSk7CisjZWxzZQogICAgIENGUnVuTG9vcFBl
cmZvcm1CbG9jayhbTlNVUkxDb25uZWN0aW9uIHJlc291cmNlTG9hZGVyUnVuTG9vcF0sIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSwgYmxvY2spOwogICAgIENGUnVuTG9vcFdha2VVcChbTlNVUkxDb25u
ZWN0aW9uIHJlc291cmNlTG9hZGVyUnVuTG9vcF0pOworI2VuZGlmCiB9CiAKIHZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29s
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCShyZXZpc2lvbiAxOTQ5MDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogCisjaW1wb3J0ICJDdXN0b21Q
cm90b2NvbE1hbmFnZXIuaCIKICNpbXBvcnQgIkRvd25sb2FkLmgiCiAjaW1wb3J0ICJOZXR3b3Jr
TG9hZC5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKQEAgLTIwNyw2ICsyMDgsOSBAQCBO
ZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oVHlwZSB0eXBlCiAKICAgICBOU1VSTFNlc3Np
b25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbkZvclR5cGUodHlw
ZSk7CiAKKyAgICBpZiAoYXV0byogY3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyPigpKQorICAg
ICAgICBjdXN0b21Qcm90b2NvbE1hbmFnZXItPnJlZ2lzdGVyUHJvdG9jb2xDbGFzcyhjb25maWd1
cmF0aW9uKTsKKyAgICAKICNpZiBIQVZFKFRJTUlOR0RBVEFPUFRJT05TKQogICAgIGNvbmZpZ3Vy
YXRpb24uX3RpbWluZ0RhdGFPcHRpb25zID0gX1RpbWluZ0RhdGFPcHRpb25zRW5hYmxlVzNDTmF2
aWdhdGlvblRpbWluZzsKICNlbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268924</attachid>
            <date>2016-01-13 17:20:55 -0800</date>
            <delta_ts>2016-01-13 18:44:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153078-20160113172024.patch</filename>
            <type>text/plain</type>
            <size>10558</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NDkwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAxLTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IGN1c3RvbSBwcm90b2NvbHMgd2hlbiB1c2luZyBOZXR3b3JrU2Vzc2lvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMDc4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBidXQgdGhp
cyBtYWtlcyB0aGUgV2ViS2l0MkN1c3RvbVByb3RvY29sc1Rlc3QgYXBpIHRlc3RzIHBhc3Mgd2hl
biB1c2luZyBOZXR3b3JrU2Vzc2lvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgTWFrZSBOU1VSTENvbm5lY3Rpb25TUEkuaCBwcml2YXRl
IHNvIHdlIGNhbiBpbmNsdWRlIGl0IGZyb20gd2l0aGluIFdlYktpdDIuCisKIDIwMTYtMDEtMTIg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTQ4MjYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTQ5MDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMzYsNyArMTMzNiw3IEBACiAJCTMxQTc5NUM3MTg4OEJDQjIwMDM4MkY5MCAv
KiBBTkdMRUluc3RhbmNlZEFycmF5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzFBNzk1QzIxODg4QjcyNDAwMzgyRjkwIC8qIEFOR0xFSW5zdGFuY2Vk
QXJyYXlzLmggKi87IH07CiAJCTMxQTc5NUM4MTg4OEJDQjUwMDM4MkY5MCAvKiBBTkdMRUluc3Rh
bmNlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMUE3OTVDMTE4ODhCNzI0MDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRBcnJheXMuY3Bw
ICovOyB9OwogCQkzMUFCNTAwMDEyMjg3OEEyMDAxQTdEQjAgLyogR3JhcGhpY3NDb250ZXh0M0RJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQUI0
RkZGMTIyODc4QTIwMDFBN0RCMCAvKiBHcmFwaGljc0NvbnRleHQzRElPUy5oICovOyB9OwotCQkz
MUIzMTNEQjFCNjk4NzE2MDBGMkFBQkMgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUIzMTNEQTFCNjk4NzE2MDBG
MkFBQkMgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi87IH07CisJCTMxQjMxM0RCMUI2OTg3MTYw
MEYyQUFCQyAvKiBOU1VSTENvbm5lY3Rpb25TUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQjMxM0RBMUI2OTg3MTYwMEYyQUFCQyAvKiBOU1VSTENv
bm5lY3Rpb25TUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkzMUIzMTNERDFCNjk4N0RCMDBGMkFBQkMgLyogTlNVUkxSZXF1ZXN0U1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUIzMTNEQzFCNjk4
N0RCMDBGMkFBQkMgLyogTlNVUkxSZXF1ZXN0U1BJLmggKi87IH07CiAJCTMxQjMxM0RGMUI2OTg4
QzUwMEYyQUFCQyAvKiBOU0J1dHRvbkNlbGxTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQjMxM0RFMUI2OTg4QzUwMEYyQUFCQyAvKiBOU0J1dHRv
bkNlbGxTUEkuaCAqLzsgfTsKIAkJMzFCQzc0MkQxQUFGRjQ1QzAwNkI0MzQwIC8qIENTU0FuaW1h
dGlvblRyaWdnZXJTY3JvbGxWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMUJDNzQyQjFBQUZGNDVDMDA2QjQzNDAgLyogQ1NTQW5pbWF0aW9u
VHJpZ2dlclNjcm9sbFZhbHVlLmNwcCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5
NTAwMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMyIEBACisyMDE2LTAxLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IGN1c3RvbSBwcm90b2NvbHMgd2hlbiB1c2lu
ZyBOZXR3b3JrU2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUzMDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlQ3VzdG9tUHJv
dG9jb2xJRCk6CisgICAgICAgICgrW1dLQ3VzdG9tUHJvdG9jb2wgY2FuSW5pdFdpdGhSZXF1ZXN0
Ol0pOgorICAgICAgICAoK1tXS0N1c3RvbVByb3RvY29sIGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1
ZXN0Ol0pOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sIGluaXRXaXRoUmVxdWVzdDpjYWNo
ZWRSZXNwb25zZTpjbGllbnQ6XSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2wgc3RhcnRM
b2FkaW5nXSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2wgc3RvcExvYWRpbmddKToKKyAg
ICAgICAgVGhlcmUncyBubyBuZWVkIHRvIGhhdmUgYSBzdGF0aWMgcG9pbnRlciB3aGVuIHdlIGNh
biB1c2UgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbiB0byBhY2Nlc3MgCisgICAgICAgIHRoZSBw
cm9jZXNzLWdsb2JhbCBDdXN0b21Qcm90b2NvbE1hbmFnZXIsIGFuZCBhZGQgbnVsbCBjaGVja3Mg
YmVjYXVzZSB0aGF0J3MgYSBnb29kIHRoaW5nIHRvIGRvLgorICAgICAgICAoV2ViS2l0OjpDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OkN1c3RvbVByb3RvY29sTWFuYWdlcik6CisgICAgICAgIENhbGwg
VVRGOEVuY29kaW5nIHdoZW4gY3JlYXRpbmcgdGhlIEN1c3RvbVByb3RvY29sTWFuYWdlciBvbiB0
aGUgbWFpbiB0aHJlYWQgdG8gbWFrZSBzdXJlIGl0IGV4aXN0cworICAgICAgICBmb3Igd2hlbiB3
ZSBkZWNvZGUgVVJMUyBpbiBSZXNvdXJjZVJlc3BvbnNlcyBmcm9tIElQQyBsYXRlciwgd2hpY2gg
aXMgZG9uZSBvbiBhIGRpZmZlcmVudCBXb3JrUXVldWUuCisgICAgICAgIChXZWJLaXQ6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlbW92ZUN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKFdl
YktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclByb3RvY29sQ2xhc3MpOgorICAg
ICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToK
KyAgICAgICAgQ2FsbCByZWdpc3RlclByb3RvY29sQ2xhc3MgdG8gc2V0IGNvbmZpZ3VyYXRpb24u
cHJvdG9jb2xDbGFzc2VzIGlmIHRoZXJlIGlzIGEgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLgorCiAy
MDE2LTAxLTEzICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBXSzI6
IFJlcXVlc3QgY29tcGxldGlvbiBjYW5kaWRhdGVzIHdoZW4gbmVlZGVkCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCShyZXZpc2lvbiAxOTQ5MDIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CitPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb247CiBPQkpD
X0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2w7CiAjZWxzZQogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29s
TWFuYWdlckltcGwuaCIKQEAgLTczLDYgKzc0LDkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgYWRkQ3VzdG9tUHJvdG9jb2woV0tDdXN0b21Qcm90b2NvbCAqKTsKICAg
ICB2b2lkIHJlbW92ZUN1c3RvbVByb3RvY29sKFdLQ3VzdG9tUHJvdG9jb2wgKik7CisjaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKKyAgICB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xDbGFzcyhOU1VSTFNl
c3Npb25Db25maWd1cmF0aW9uICopOworI2VuZGlmCiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0
b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q29jb2EubW0JKHJldmlzaW9uIDE5NDkwMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzAsMzAgKzMwLDIyIEBACiAjaW1wb3J0ICJDdXN0b21Qcm90b2Nv
bE1hbmFnZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3MuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAj
aW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL05TVVJMQ29ubmVjdGlvblNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgotCi0jaWZkZWYgX19oYXNfaW5jbHVkZQotI2lmIF9faGFzX2luY2x1ZGUoPEZvdW5kYXRpb24v
TlNVUkxDb25uZWN0aW9uUHJpdmF0ZS5oPikKLSNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxDb25u
ZWN0aW9uUHJpdmF0ZS5oPgotI2VuZGlmCi0jZW5kaWYKLQotQGludGVyZmFjZSBOU1VSTENvbm5l
Y3Rpb24gKCkKLSsgKENGUnVuTG9vcFJlZilyZXNvdXJjZUxvYWRlclJ1bkxvb3A7Ci1AZW5kCisj
aW1wb3J0IDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIEN1c3RvbVByb3RvY29sTWFuYWdlciog
c2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOwotCiBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVD
dXN0b21Qcm90b2NvbElEKCkKIHsKICAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlQ3VzdG9tUHJv
dG9jb2xJRCA9IDA7CkBAIC03NSw3ICs2Nyw5IEBAIEBpbnRlcmZhY2UgV0tDdXN0b21Qcm90b2Nv
bCA6IE5TVVJMUHJvdG8KIAogKyAoQk9PTCljYW5Jbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QKIHsKLSAgICByZXR1cm4gc2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5z
dXBwb3J0c1NjaGVtZShbW1tyZXF1ZXN0IFVSTF0gc2NoZW1lXSBsb3dlcmNhc2VTdHJpbmddKTsK
KyAgICBpZiAoYXV0byogY3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gTmV0d29ya1Byb2Nlc3M6OnNp
bmdsZXRvbigpLnN1cHBsZW1lbnQ8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyPigpKQorICAgICAgICBy
ZXR1cm4gY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5zdXBwb3J0c1NjaGVtZShbW1tyZXF1ZXN0IFVS
TF0gc2NoZW1lXSBsb3dlcmNhc2VTdHJpbmddKTsKKyAgICByZXR1cm4gTk87CiB9CiAKICsgKE5T
VVJMUmVxdWVzdCAqKWNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0CkBAIC05NSwxOSArODksMjMgQEAgLSAoaWQpaW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIF9jdXN0b21Qcm90b2Nv
bElEID0gZ2VuZXJhdGVDdXN0b21Qcm90b2NvbElEKCk7Ci0gICAgc2hhcmVkQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLT5hZGRDdXN0b21Qcm90b2NvbChzZWxmKTsKKyAgICBpZiAoYXV0byogY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyID0gTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyPigpKQorICAgICAgICBjdXN0b21Qcm90b2NvbE1hbmFnZXIt
PmFkZEN1c3RvbVByb3RvY29sKHNlbGYpOwogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lk
KXN0YXJ0TG9hZGluZwogewotICAgIHNoYXJlZEN1c3RvbVByb3RvY29sTWFuYWdlci0+Y2hpbGRQ
cm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpTdGFy
dExvYWRpbmcoc2VsZi5jdXN0b21Qcm90b2NvbElELCBbc2VsZiByZXF1ZXN0XSksIDApOworICAg
IGlmIChhdXRvKiBjdXN0b21Qcm90b2NvbE1hbmFnZXIgPSBOZXR3b3JrUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc3VwcGxlbWVudDxDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCkpCisgICAgICAgIGN1c3Rv
bVByb3RvY29sTWFuYWdlci0+Y2hpbGRQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5OjpTdGFydExvYWRpbmcoc2VsZi5jdXN0b21Qcm90b2NvbElELCBb
c2VsZiByZXF1ZXN0XSksIDApOwogfQogCiAtICh2b2lkKXN0b3BMb2FkaW5nCiB7Ci0gICAgc2hh
cmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5jaGlsZFByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OlN0b3BMb2FkaW5nKHNlbGYuY3VzdG9tUHJvdG9j
b2xJRCksIDApOwotICAgIHNoYXJlZEN1c3RvbVByb3RvY29sTWFuYWdlci0+cmVtb3ZlQ3VzdG9t
UHJvdG9jb2woc2VsZik7CisgICAgaWYgKGF1dG8qIGN1c3RvbVByb3RvY29sTWFuYWdlciA9IE5l
dHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PEN1c3RvbVByb3RvY29sTWFuYWdl
cj4oKSkgeworICAgICAgICBjdXN0b21Qcm90b2NvbE1hbmFnZXItPmNoaWxkUHJvY2VzcygpLT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3RvcExvYWRpbmcoc2Vs
Zi5jdXN0b21Qcm90b2NvbElEKSwgMCk7CisgICAgICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+
cmVtb3ZlQ3VzdG9tUHJvdG9jb2woc2VsZik7CisgICAgfQogfQogCiBAZW5kCkBAIC0xMjMsOCAr
MTIxLDcgQEAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpDdXN0b21Qcm90b2NvbE1hbgogICAgIDog
bV9jaGlsZFByb2Nlc3MoY2hpbGRQcm9jZXNzKQogICAgICwgbV9tZXNzYWdlUXVldWUoV29ya1F1
ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyIikpCiB7
Ci0gICAgQVNTRVJUKCFzaGFyZWRDdXN0b21Qcm90b2NvbE1hbmFnZXIpOwotICAgIHNoYXJlZEN1
c3RvbVByb3RvY29sTWFuYWdlciA9IHRoaXM7CisgICAgV2ViQ29yZTo6VVRGOEVuY29kaW5nKCk7
CiB9CiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplQ29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCkBAIC0xMzQsNyArMTMxLDkgQEAgdm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemVDbwogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFu
YWdlcjo6aW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKIHsKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBbTlNVUkxQcm90
b2NvbCByZWdpc3RlckNsYXNzOltXS0N1c3RvbVByb3RvY29sIGNsYXNzXV07CisjZW5kaWYKIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJl
ZEZvckN1c3RvbVByb3RvY29scy5zaXplKCk7ICsraSkKICAgICAgICAgcmVnaXN0ZXJTY2hlbWUo
cGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sc1tpXSk7CkBA
IC0xNTMsNyArMTUyLDE0IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZW1vdmVDdXN0
b20KICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXgpOwogICAg
IG1fY3VzdG9tUHJvdG9jb2xNYXAucmVtb3ZlKGN1c3RvbVByb3RvY29sLmN1c3RvbVByb3RvY29s
SUQpOwogfQotICAgIAorCisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKK3ZvaWQgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjpyZWdpc3RlclByb3RvY29sQ2xhc3MoTlNVUkxTZXNzaW9uQ29uZmlndXJh
dGlvbiAqY29uZmlndXJhdGlvbikKK3sKKyAgICBjb25maWd1cmF0aW9uLnByb3RvY29sQ2xhc3Nl
cyA9IEBbW1dLQ3VzdG9tUHJvdG9jb2wgY2xhc3NdXTsKK30KKyNlbmRpZgorCiB2b2lkIEN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7
CiAgICAgQVNTRVJUKCFzY2hlbWUuaXNOdWxsKCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CShyZXZpc2lvbiAxOTQ5MDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogCisjaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaCIKICNpbXBvcnQgIkRvd25sb2FkLmgiCiAjaW1wb3J0ICJOZXR3b3JrTG9hZC5oIgog
I2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKQEAgLTIwNyw2ICsyMDgsOSBAQCBOZXR3b3JrU2Vz
c2lvbjo6TmV0d29ya1Nlc3Npb24oVHlwZSB0eXBlCiAKICAgICBOU1VSTFNlc3Npb25Db25maWd1
cmF0aW9uICpjb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbkZvclR5cGUodHlwZSk7CiAKKyAg
ICBpZiAoYXV0byogY3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gTmV0d29ya1Byb2Nlc3M6OnNpbmds
ZXRvbigpLnN1cHBsZW1lbnQ8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyPigpKQorICAgICAgICBjdXN0
b21Qcm90b2NvbE1hbmFnZXItPnJlZ2lzdGVyUHJvdG9jb2xDbGFzcyhjb25maWd1cmF0aW9uKTsK
KyAgICAKICNpZiBIQVZFKFRJTUlOR0RBVEFPUFRJT05TKQogICAgIGNvbmZpZ3VyYXRpb24uX3Rp
bWluZ0RhdGFPcHRpb25zID0gX1RpbWluZ0RhdGFPcHRpb25zRW5hYmxlVzNDTmF2aWdhdGlvblRp
bWluZzsKICNlbHNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>